EventArgs имеется одно поле Empty типа static, которое представляет собой объект типа EventArgs без данных.
Ниже приведен пример программы, в которой формируется .NET-совместимое событие.
// Пример формирования .NET-совместимого события, using System;
// Объявить класс, производный от класса EventArgs. class MyEventArgs : EventArgs { public int EventNum;
}
// Объявить тип делегата для события.
delegate void MyEventHandler(object source, MyEventArgs arg);
/’/ Объявить класс, содержащий событие, class MyEvent {
static int count = 0;
// Этот метод запускает событие SomeEvent. public void OnSomeEvent() {
MyEventArgs arg = new MyEventArgs();
if(SomeEvent != null) { arg.EventNum = count++;
SomeEvent(this, arg);
}
}
}
class X {
public void Handler(object source, MyEventArgs arg) { Console.WriteLine('Событие ' + arg.EventNum +
' получено объектом класса X.'); Console.WriteLine('Источник: ' + source);
Console.WriteLine();
}
}
class Y {
public void Handler(object source, MyEventArgs arg) { Console.WriteLine('Событие ' + arg.EventNum +
' получено объектом класса Y.'); Console.WriteLine('Источник: ' + source);
Console.WriteLine() ;
}
}
class EventDemo6 { static void Main() {
X obi = new X ();
Y ob2 = new Y ();
MyEvent evt - new* MyEvent ();
// Добавить обработчик Handler() в цепочку событий, evt ..SomeEvent += obi. Handler; evt.SomeEvent += ob2.Handler;
// Запустить событие, evt.OnSomeEvent(); evt.OnSomeEvent();
}
}
Ниже приведен результат выполнения этой программы.
Событие 0 получено объектом класса X Источник: MyEvent
Событие 0 получено объектом класса Y Источник: MyEvent
Событие 1 получено объектом класса X Источник: MyEvent
Событие 1 получено объектом класса Y Источник: MyEvent
В данном примере создается класс MyEventArgs, производный от класса EventArgs. В классе MyEventArgs добавляется лишь одно его собственное поле: EventNum. Затем объявляется делегат MyEventHandler, принимающий два параметра, требующиеся для среды .NET Framework. Как пояснялось выше, первый параметр содержит ссылку на объект, формирующий событие, а второй параметр — ссылку на объект класса EventArgs или производного от него класса. Обработчики событий Handler (), определяемые в классах X и Y, принимают параметры тех же самых типов.
