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