пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Стандартный делегат и обработка событий.

В библиотеке .NETимеется большое количество стандартных делегатов, предназначенных для реализации обработки событий. Большинство из таких классов оформлено так:

  • Имя делегата заканчитвается EventHandler
  • Делегат получает 2 параметра – источник события (тип object), аргументы события (типEventArgs)

Если обработчикам события требуется специфическая информация о событии, то для этого создают класс, производный от стандартного класса EventArgs, и добавляют собственный код. Если же программист не будет использовать в делегате собственный код , то собственный класс не создается, а используется стандартный класс System.EventHandler.

Пример стандартного делегата EventHandler для оповещения наблюдателей с помощью событий

namespace ConsoleApplication1

{class Источник

{ public event EventHandler My_event;

public void Создать_событие()

{Console.WriteLine("Событие создано!!!");

if(My_event!=null) My_event(this,null);

}

}

class Наблюдатель1

{public void OnDo_Event(object sender, EventArgs e)

{Console.WriteLine("ВИЖУ, что произошло событие!!!"); }

}

class Наблюдатель2

{public static void OnDo_Event(object sender, EventArgs e)

{Console.WriteLine("Я тоже ВИЖУ, что произошло событие!!!"); }

}

 

class Program

{static void Main(string[] args)

{ Источник A = new Источник();

Наблюдатель1 B = new Наблюдатель1();

Наблюдатель1 C = new Наблюдатель1();

A.My_event += new EventHandler(B.OnDo_Event);

A.My_event += new EventHandler(C.OnDo_Event);

A.My_event += new EventHandler(Наблюдатель2.OnDo_Event);

//анонимный обработчик!!! Создание нового метода для обработки события!!!

A.My_event += delegate(object sender, EventArgs e)

{ Console.WriteLine("Я тоже с вами обрабатываю это событие"); };

A.Создать_событие(); Console.ReadKey(); }

}

}

 

 

 

 


11.01.2019; 17:05
хиты: 104
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь