Правильный способ использования событий в .Net заключается в следующем:
- использовать делегата с именем, которое заканчивается на
EventHandler
- , у этого делегата ровно два параметра,
sender
и e
.sender
должен иметь тип object
и содержать ссылку на экземпляр класса, вызвавшего событие.e
должен иметь тип, который наследуется от EventArgs
(часто EventArgs
).e
- это экземпляр, содержащий данные события.
Вы не должны ожидать, что найдете какую-либо другую сигнатуру обработчика событий, это всегда (object sender, XXXEventArgs e)
.
Обратите внимание, что при поднятиисобытия и не нужно передавать данные события, следует использовать EventArgs.Empty
.
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
public void OnMyEvent()
{
if (this.MyEvent != null)
{
this.MyEvent(this, EventArgs.Empty);
}
}