方法 : イベント ハンドラー メソッドをイベントに接続する
別のクラスで定義されたイベントを処理するには、イベント ハンドラーを定義して登録する必要があります。 イベント ハンドラーのメソッド シグネチャは、イベント用に宣言されたデリゲートと同じである必要があります。 イベント ハンドラーを登録するには、ハンドラーをイベントに追加します。 イベント ハンドラーをイベントに追加すると、クラスによってそのイベントが発生するときに常にメソッドが呼び出されます。
イベントの発生と処理を説明する詳細なサンプルについては、「方法 : イベントを発生させる/処理する」を参照してください。
イベントのイベント ハンドラー メソッドを追加するには
- イベント デリゲートと同じシグネチャでイベント ハンドラー メソッドを定義します。
Public Class WakeMeUp
' AlarmRang has the same signature as AlarmEventHandler.
Public Sub AlarmRang(sender As Object, e As AlarmEventArgs)
'...
End Sub
'...
End Class
public class WakeMeUp
{
// AlarmRang has the same signature as AlarmEventHandler.
public void AlarmRang(object sender, AlarmEventArgs e)
{
//...
}
//...
}
public ref class WakeMeUp
{
public:
// AlarmRang has the same signature as AlarmEventHandler.
void AlarmRang(Object^ sender, AlarmEventArgs^ e)
{
//...
}
//...
};
- イベント ハンドラー メソッドへの参照を使用して、デリゲートのインスタンスを作成します。 デリゲート インスタンスが呼び出されると、次にイベント ハンドラー メソッドが呼び出されます。
' Create an instance of WakeMeUp.
Dim w As New WakeMeUp()
' Instantiate the event delegate.
Dim alhandler As AlarmEventHandler = AddressOf w.AlarmRang
// Create an instance of WakeMeUp.
WakeMeUp w = new WakeMeUp();
// Instantiate the event delegate.
AlarmEventHandler alhandler = new AlarmEventHandler(w.AlarmRang);
// Create an instance of WakeMeUp.
WakeMeUp^ w = gcnew WakeMeUp();
// Instantiate the event delegate.
AlarmEventHandler^ alhandler = gcnew AlarmEventHandler(w, &WakeMeUp::AlarmRang);
- イベントにデリゲート インスタンスを追加します。 イベントが発生すると、デリゲート インスタンスとそれに関連付けられたイベント ハンドラー メソッドが呼び出されます。
' Instantiate the event source.
Dim clock As New AlarmClock()
' Add the delegate instance to the event.
AddHandler clock.Alarm, alhandler
// Instantiate the event source.
AlarmClock clock = new AlarmClock();
// Add the delegate instance to the event.
clock.Alarm += alhandler;
// Instantiate the event source.
AlarmClock^ clock = gcnew AlarmClock();
// Add the delegate instance to the event.
clock->Alarm += alhandler;