如何:将事件处理程序方法连接到事件

更新: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
    

请参见

任务

如何:引发和使用事件

概念

使用事件

引发事件

事件和委托

其他资源

处理和引发事件