次の方法で共有


AddHandler ステートメント

実行時にイベントをイベント ハンドラーに関連付けます。

構文

AddHandler event, {AddressOf eventhandler | expression }

部品

部分 説明
event 処理するイベントの名前。
eventhandler イベントを処理するプロシージャの名前。
expression イベントを処理するラムダ式。

パーツ AddressOf eventhandlerexpression は相互に排他的です。

注釈

AddHandlerおよびRemoveHandlerステートメントを使用すると、プログラムの実行中にいつでもイベント処理を開始および停止できます。

新しいイベント ハンドラー ( eventhandler プロシージャまたは expression ラムダ) のシグネチャは、イベント eventのシグネチャと一致する必要があります。

Handles キーワードと AddHandler ステートメントを使用すると、特定のプロシージャが特定のイベントを処理するように指定できますが、違いがあります。 AddHandler ステートメントは、実行時にプロシージャをイベントに接続します。 プロシージャを定義する場合は、 Handles キーワードを使用して、特定のイベントを処理するように指定します。 詳細については、「 ハンドル」を参照してください。

明示的なラムダを使用して追加されたハンドラーは、後で ( RemoveHandlerを使用して) 削除できません。 実際、ラムダに名前が指定されていない場合、後でそれを参照することはできません。 ただし、ラムダを変数に割り当て、この変数を使用してハンドラーを追加すると、この変数を使用してハンドラーを削除できます。

カスタム イベントの場合、 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

こちらも参照ください