AddHandler ステートメント
実行時にイベントをイベント ハンドラーに関連付けます。
構文
AddHandler event, {AddressOf eventhandler | expression }
指定項目
パーツ | 説明 |
---|---|
event |
処理するイベントの名前。 |
eventhandler |
イベントを処理するプロシージャの名前。 |
expression |
イベントを処理するラムダ式。 |
パーツ AddressOf eventhandler
と expression
は相互に排他的です。
Remarks
AddHandler
および RemoveHandler
ステートメントを使用すると、プログラムの実行中にいつでもイベント処理を開始および停止できます。
新しいイベント ハンドラー (eventhandler
プロシージャまたは expression
ラムダ) のシグネチャは、イベント event
のシグネチャと一致する必要があります。
Handles
キーワードと AddHandler
ステートメントはどちらも特定のプロシージャで特定のイベントを処理するように指定できますが、両者には違いがあります。 AddHandler
ステートメントは、実行時にプロシージャをイベントに接続します。 Handles
キーワードは、プロシージャの定義時に特定のイベントを処理するよう指定する場合に使用します。 詳細については、「Handles」を参照してください。
明示的なラムダを使用して追加されたハンドラーは、後で削除できません (RemoveHandler
を使用)。 実際、ラムダに名前が指定されていない場合、後でそれを参照することはできません。 しかし、ラムダを変数に代入し、この変数を使ってハンドラーを追加すると、この変数を使用してハンドラーを削除できます。
Note
カスタム イベントの場合は、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
関連項目
.NET