Поделиться через


Практическое руководство. Соединение методов обработчика событий с событиями

Обновлен: Ноябрь 2007

Чтобы использовать события, определенные в другом классе, необходимо определить и зарегистрировать обработчика событий. Обработчик событий должен иметь такую же подпись метода как и делегат, объявленный для события. Зарегистрировать обработчик событий можно путем добавления обработчика к событию. После добавления обработчика к событию, метод вызывается всякий раз, когда класс вызывает это событие.

Полный пример, иллюстрирующий вызов и обработку событий, содержится в разделе Практическое руководство: вызов и прием событий

Чтобы добавить метод обработчика событий для события

  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
    

См. также

Задачи

Практическое руководство. Вызов и прием событий

Основные понятия

Прием событий

Вызов события

События и делегаты

Другие ресурсы

Обработка и вызов событий