Свойство обработки изменено из другого класса в vb.net
У меня есть класс, как показано ниже, который содержит мои глобальные переменные в качестве свойства. Я сделал этот "ModelFullPath" из переменной в свойство, потому что я не знаю, как вызывать события с изменениями переменной (если у вас есть больше логических предложений, я буду признателен).
Public Class Globals
Private Shared _modelfullpath As String = String.Empty
Public Shared Event ModelPathChanged(ByVal _modelfullpath As String)
Public Shared Property ModelFullPath() As String
Get
Return _modelfullpath
End Get
Set(ByVal value As String)
_modelfullpath = value
RaiseEvent ModelPathChanged(_modelfullpath)
End Set
End Property
Public Shared Sub TestIt() Handles MyClass.ModelPathChanged
' Some codes in here
MessageBox.Show("It Changed")
End Sub
End Class
В моем другом классе у меня есть "Button2", который получает текстовое поле строкового значения и устанавливает свойство ModelFullPath моего Globals в соответствии со значением textbox1.Text. С другой стороны, Button1 записывает свойство Globals.ModelFullPath в значение label1.text.
Здесь я хотел бы поместить событие, если ModelFullPath изменен, я хотел бы сделать некоторые действия, такие как изменение цвета фона инструмента и т. Д. В настоящее время я установил для него показ "Это изменилось" с помощью окна сообщений. Но главная проблема в том, что я не могу справиться с этим из другого класса, как показано ниже.
Public Class MainTool
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label1.Text = Globals.ModelFullPath
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Globals.ModelFullPath = TextBox1.Text
End Sub
Private Sub VariableChanged() Handles Globals.VariableChanged
Globals.TestIt()
End Sub
End Class
Как справиться Globals.VariableChanged
событие? Потому что он не признает это событие.
1 ответ
Вам нужно использовать AddHandler(), чтобы подключить событие. Событие Load() вашей Формы является хорошим местом для этого:
Public Class MainTool
Private Sub MainTool_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler Globals.ModelPathChanged, AddressOf Globals_ModelPathChanged
End Sub
Private Sub Globals_ModelPathChanged(_modelfullpath As String)
TextBox1.Text = _modelfullpath
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Globals.ModelFullPath = "Hello!"
End Sub
End Class