AddHandler 语句
在运行时将事件与事件处理程序相关联。
语法
AddHandler event, {AddressOf eventhandler | expression }
组成部分
组成部分 | 说明 |
---|---|
event |
要处理的事件的名称。 |
eventhandler |
处理事件的过程的名称。 |
expression |
处理事件的 lambda 表达式。 |
AddressOf eventhandler
和 expression
部分是互斥的。
注解
使用 AddHandler
和 RemoveHandler
语句,可以在程序执行过程中随时启动和停止事件处理。
新事件处理程序(eventhandler
过程或 expression
lambda)的签名必须与 event
事件的签名相匹配。
Handles
关键字和 AddHandler
语句都允许你指定特定过程处理特定事件,但存在差异。 AddHandler
语句在运行时将过程连接到事件。 定义过程时使用 Handles
关键字,以指定它处理特定事件。 有关详细信息,请参见句柄。
使用显式 lambda 添加的处理程序以后无法删除(使用 RemoveHandler
)。 事实上,如果不为 lambda 指定名称,以后就不能引用它。 但将 lambda 赋给变量并通过此变量添加处理程序,可以使用此变量删除处理程序。
注意
对于自定义事件,AddHandler
语句调用事件的 AddHandler
访问器。 有关自定义事件的详细信息,请参阅事件语句。
示例
Sub TestEvents()
Dim Obj As New Class1
' Associate an event handler with an event.
AddHandler Obj.Ev_Event, AddressOf EventHandler
' Call the method to raise the event.
Obj.CauseSomeEvent()
' Stop handling events.
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
' This event will not be handled.
Obj.CauseSomeEvent()
' Associate an event handler with an event, using a lambda.
' This handler cannot be removed.
AddHandler Obj.Ev_Event, Sub ()
MsgBox("Lambda caught event.")
End Sub
' This event will be handled by the lambda above.
Obj.CauseSomeEvent()
End Sub
Sub EventHandler()
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
Public Class Class1
' Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class