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


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

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

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

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

  • Определите метод с той же сигнатурой, что и у делегата события.
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)
    {
        //...
    }
    //...
};
  1. Создайте экземпляр делегата с помощью ссылки на метод обработчика событий. Когда вызывается экземпляр делегата, то он, в свою очередь, вызывает метод обработчика событий.
' 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);
  1. Добавьте экземпляр делегата к событию. При инициации события вызывается экземпляр делегата и соответствующий ему метод обработчика событий.
' 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;

См. также

Задачи

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

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

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

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

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

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

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