Содержание
- 2. имя _события - идентификатор, выбираемый программистом в качестве названия конкретного члена, называемого переменной события. имя_делегата –
- 3. В технологии Windows – программирования принято говорить, что объект (в данном примере статический метод класса) публикует
- 4. using System; delegate void TimeHandler(); class Test_cs { static event TimeHandler onTime; static void run() {
- 5. class Program { static void Main(string[] args) { onTime += new TimeHandler(one); onTime += new TimeHandler(two);
- 6. Более общий случай – событие создается объектом, а в других объектах ( в объектах других классов)
- 7. class EventDemo { // обработчик события static void Handler() { Console.WriteLine(" событие произошло"); } public static
- 8. Пример множественной адресации события Как и делегаты, события могут быть многоадресными. Благодаря использованию множественной адресации на
- 9. class X { public void XHandler() { Console.WriteLine("Событие, получаемое объектом Х"); } } class Y {
- 10. class EventDemo { static void Handler() { Console.WriteLine("Событие, получаемое EventDemo"); } static void Main(string[] args) {
- 11. Результат выполнения программы Событие, получаемое EventDemo Событие, получаемое объектом X Событие, получаемое объектом Y Событие, получаемое
- 12. Итак, имя делегата обычно состоит из названия события и слова EventHandler. Например: public delegate ChangedEventHandler(object sender,
- 13. Любое событие – это на самом деле набор двух скрытых методов, определенных как public. Один из
- 14. Использование аксессоров событий Существует две формы блока кода event. Первая форма позволяет создавать события, которые автоматически
- 15. Механизм работы с событиями предусматривает несколько этапов. Объявление делегата – типа, задающего сигнатуру тех (еще неизвестных
- 16. При наличии такого класса и двух подчиненных – класса генерации и класса обработки событий – схема
- 17. Пример. Рассмотрим программу с делегатом и четырьмя классами. Класс Sorting содержит метод, который сортирует в порядке
- 18. using System; public delegate void SortHandler(long cn, int si, int ki); class Sorting { int size;
- 19. public void sort() { int temp; for(int i = 0; i { for(int j = i+1;j
- 20. class Display { static int len = 30; static string st = null; public static void
- 21. Событийный делегат SortHandler и переменная события onSort должны быть одинаково доступны в месте подписки на событие.
- 22. Различные возможности использования событий События могут быть определены в интерфейсах. В этом случае реализующие классы должны
- 23. Использование анонимных методов с событиями Анонимный метод можно использовать в качестве обработчика события, что позволяет обойтись
- 24. using System; namespace AnonimDemo { delegate void MyEventHandler(); class MyEvent { public event MyEventHandler SomeEvent; public
- 25. using System; using System.Collections; namespace EventDemo { public delegate void ChangedEventHandler(object sender, ChangedEventArgs EventArgs); public class
- 26. public class ListWithChangedEvent:ArrayList { public event ChangedEventHandler Changed; private ChangedEventArgs evargs = new ChangedEventArgs(); protected virtual
- 27. public override void Clear() { evargs.Item = 0; OnChanged(evargs); base.Clear(); } public override object this[int index]
- 28. public class EventReceiver1 { private ListWithChangedEvent List; public EventReceiver1(ListWithChangedEvent list) { List = list; OnConnect(); }
- 29. class EventReceiver2 { private ListWithChangedEvent List; public EventReceiver2(ListWithChangedEvent list) { List = list; OnConnect(); } private
- 31. Скачать презентацию