在运行时将事件与事件处理程序相关联。
语法
AddHandler event, {AddressOf eventhandler | expression }
部件
部件 | DESCRIPTION |
---|---|
event |
要处理的事件的名称。 |
eventhandler |
处理事件的过程的名称。 |
expression |
处理事件的 lambda 表达式。 |
这些部分 AddressOf eventhandler
和 expression
互斥。
注解
使用 AddHandler
and 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