我必须"赶上"来自另一个班级的活动,但我不能。 项目包含两种形式:Form1和Form2以及类参数。表单1包含一个按钮,它必须更改类道具中的属性值。 Form2必须知道道具何时引发事件。
情况如下:
''Form1 code
Public Class Form1
Dim p As New params
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form2.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
p.demo = "mytry"
End Sub
End Class
''Form2 code
Public Class Form2
Private WithEvents p As params
Private Sub pChanged(ByVal propertyName As String) Handles p.PropChanged
MessageBox.Show(propertyName)
End Sub
End Class
''Class params code
Public Class params
Public Event PropChanged(ByVal propName As String)
Private _demo As String
Public Property demo() As String
Get
Return _demo
End Get
Set(ByVal value As String)
_demo = value
RaiseEvent PropChanged("demo")
End Set
End Property
End Class
问题是Form2中的子pChanged永远不会被触发,并且当属性" demo"引发事件PropChanged。
如何使这个工作?
答案 0 :(得分:2)
如果您更改了params
中的属性,则有两个{{1}}个变量,并且您在Form2
处理错误。您可以在Form1
中处理该事件并再次将其提升以在Form2
中处理该事件。
一个人在这里:
Form1
和一个
Public Class Form1
Dim p As New params
请注意,如果您想在那里处理活动,还必须在Public Class Form2
Private WithEvents p As params
中使用WithEvents p As New params
。