事件处理中因为有了handler,所以前面的函数名称并不重要,即用
Private Sub Buttonx1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("hi")
End Sub
与
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("hi")
End Sub
没有区别。
另外,处理函数在类的定义之外,而且是针对对象的,而非类的。
Module Module1
Public Class CHenry
Public Event EventHR() ' 声明一个事件
Sub CauseSomeEvent()
RaiseEvent EventHR() ' 引发事件
End Sub
End Class
WithEvents Obj As New CHenry '模块或类级别的声明
Sub Obj_EventHR() Handles Obj.EventHR
MsgBox("事件处理器捕捉到了事件.") '处理事件.
End Sub
Sub Main()
Obj.CauseSomeEvent() '调用对象去引发事件
End Sub
End Module
我的理解:
1、事件处理函数可以在含有事件的类之外,而且必须在其外
2、事件处理函数是属于某个对象的,当然这个对象得是包含这个事件的类的对象
3、上述对象必须用withevents声明
4、在事件处理函数中handler后跟改对象的事件