Как вызвать событие при изменении глобальной переменной в vb.net - PullRequest
0 голосов
/ 10 января 2019

У меня есть глобальные переменные на уровне модуля с нижеуказанными типами 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.

Я пытался с помощью метода ниже, который сделал для параметра целочисленного типа, но у меня не получилось в моем случае, я думаю, из-за их объекта (я типа принадлежит 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
...