AddHandler 语句

在运行时将事件与事件处理程序相关联。

语法

AddHandler event, {AddressOf eventhandler | expression }

部件

部件 DESCRIPTION
event 要处理的事件的名称。
eventhandler 处理事件的过程的名称。
expression 处理事件的 lambda 表达式。

这些部分 AddressOf eventhandlerexpression 互斥。

注解

使用 AddHandler and RemoveHandler 语句,可以在程序执行期间随时启动和停止事件处理。

新事件处理程序( eventhandler 过程或 expression lambda)的签名必须与事件的 event签名匹配。

关键字 HandlesAddHandler 语句都允许指定特定过程处理特定事件,但存在差异。 该 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

另请参阅