AddHandler 陳述式

在執行階段將事件與事件處理常式建立關聯。

語法

AddHandler event, {AddressOf eventhandler | expression }

組件

部分 描述
event 要處理的事件名稱。
eventhandler 處理事件的程序名稱。
expression 處理事件的 Lambda 運算式。

組件 AddressOf eventhandlerexpression 彼此互斥。

備註

AddHandlerRemoveHandler 陳述式可讓您在程式執行期間隨時啟動及停止事件處理。

新事件處理常式的簽章 (eventhandler 程序或 expression Lambda) 必須符合事件 event 的簽章。

Handles 關鍵字和 AddHandler 陳述式都可以讓您指定由特定程序處理特定事件,但兩者存有差異。 AddHandler 陳述式會在執行階段將程序連接到事件。 當定義程序以指定它處理特定事件時,使用 Handles 關鍵字。 如需詳細資訊,請參閱控制代碼

稍後無法移除使用明確 Lambda 新增的處理常式 (使用 RemoveHandler)。 事實上,若 Lambda 未指定名稱,則稍後便無法參考該控制代碼。 但是,將 Lambda 指派給變數,並透過此變數新增處理常式,便可使用此變數移除控制代碼。

注意

針對自訂事件,AddHandler 陳述式會叫用事件的 AddHandler 存取子。 如需有關自訂事件的詳細資訊,請參閱 Event 陳述式

範例

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

另請參閱