実行時にイベントをイベント ハンドラーに関連付けます。
構文
AddHandler event, {AddressOf eventhandler | expression }
部品
部分 | 説明 |
---|---|
event |
処理するイベントの名前。 |
eventhandler |
イベントを処理するプロシージャの名前。 |
expression |
イベントを処理するラムダ式。 |
パーツ AddressOf eventhandler
と expression
は相互に排他的です。
注釈
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
こちらも参照ください
.NET