次の方法で共有


方法 : イベント ハンドラ メソッドをイベントに接続する

更新 : 2007 年 11 月

別のクラスで定義されたイベントを処理するには、イベント ハンドラを定義して登録する必要があります。イベント ハンドラのメソッド シグネチャは、イベント用に宣言されたデリゲートと同じである必要があります。イベント ハンドラを登録するには、ハンドラをイベントに追加します。イベント ハンドラをイベントに追加すると、クラスによってそのイベントが発生するときに常にメソッドが呼び出されます。

イベントの発生と処理を説明する詳細なサンプルについては、「方法 : イベントを発生させる/処理する」を参照してください。

イベントのイベント ハンドラ メソッドを追加するには

  1. イベント デリゲートと同じシグネチャでイベント ハンドラ メソッドを定義します。

    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
    
  2. イベント ハンドラ メソッドへの参照を使用して、デリゲートのインスタンスを作成します。デリゲート インスタンスが呼び出されると、次にイベント ハンドラ メソッドが呼び出されます。

    // 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
    
  3. イベントにデリゲート インスタンスを追加します。イベントが発生すると、デリゲート インスタンスとそれに関連付けられたイベント ハンドラ メソッドが呼び出されます。

    // 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
    

参照

処理手順

方法 : イベントを発生させる/処理する

概念

イベントの利用

イベントの発生

イベントとデリゲート

その他の技術情報

イベントの処理と発生