首页 > 解决方案 > 如何在 vb.net 中更改全局变量时引发事件

问题描述

我在模块级别具有以下 COM 接口类型的全局变量。

Imports System.IO
Imports simpackcomslvLib
Imports simpackcompostLib

Module Globals
    Public Srv As SpckCOMApp
    Public Mdl As IScrModel
    Public Post As PostComApp
    Public Res As PostComProject
End Module

在另一个类中,我的一些程序更改了它们的对象值。当例如 Mdl 值更改时,我想运行一些我的程序,这些程序在我的工具的 GUI 上进行了一些更改。

我尝试了以下方法,该方法用于整数类型参数,但我的情况没有成功,我认为是因为它们的对象(我类型属于 COM 接口。

Public Class myVar
    Private mValue As Integer
    Public Event VariableChanged(ByVal mvalue As Integer)
    Public Property Variable() As Integer
        Get
            Variable = mValue
        End Get
        Set(ByVal value As Integer)
            mValue = value
            RaiseEvent VariableChanged(mValue)
        End Set
    End Property
End Class

上述代码在示例中的用法

Public Class Form1
    Private WithEvents test As New myVar
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        test.Variable = CInt(TextBox1.Text)
    End Sub
    Private Sub VariableChanged(ByVal NewValue As Integer) Handles test.VariableChanged
        MessageBox.Show(NewValue)
    End Sub
End Class

无论如何要在模块中实现我的以下变量,这样在模块级别使用也是错误的,我应该将它们移到类下吗?

Module Globals
    Public Srv As SpckCOMApp
    Public Mdl As IScrModel
    Public Post As PostComApp
    Public Res As PostComProject
End Module

标签: vb.netglobal-variablesraiseevent

解决方案


推荐阅读