Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
To publish events based on the EventHandler patternСодержание книги
Поиск на нашем сайте
1. (Skip this step and go to Step 3a if you do not have to send custom data with your event.) Declare your class at a scope visible to both your publisher and subscriber classes, and add the required members to hold your custom event data. In this example, a simple string is returned.
2. (Skip this step if you are using the generic version of EventHandler<(Of <(TEventArgs>)>).) Declare a delegate in your publishing class. Give it a name that ends with EventHandler. The second parameter specifies your custom EventArgs type.
3. Declare the event in your publishing class by using one of the following steps. a. If you have no custom EventArgs class, your Event type will be the non-generic EventHandler delegate. You do not have to declare it because it is already declared in the System namespace which is included when you create your C# project:
b. If you are using the non-generic version of EventHandler and you have a custom class derived from EventArgs, declare your event inside your publishing class and use your delegate as the type:
c. If you are using the generic version, you do not need a custom delegate. Instead, you specify your event type as EventHandler<CustomEventArgs>, substituting the name of your own class between the angle brackets.
Порядок публикации событий, основанных на шаблоне EventHandler 1. (Пропустите этот шаг и перейдите к шагу 3a, если не требуется передавать с событием пользовательские данные.) Объявите свой класс в области, видимой для ваших классов издателя и подписчика, и добавьте необходимые члены для хранения данных о настраиваемых событиях. В данном примере возвращается простая строка. ß--- 2. (Пропустите данный шаг, если используется общая версия EventHandler<(Of <(TEventArgs>)>).) Объявите делегат в своем классе публикации. Назначьте ему имя, заканчивающееся на EventHandler. Второй параметр задает ваш тип EventArgs.
3. Объявите событие в своем классе публикации с помощью одного из следующих действий. a. Если пользовательский класс EventArgs отсутствует, ваш тип Event представляет собой не являющийся общим делегат EventHandler. Его не нужно объявлять, так как он уже объявлен в пространстве имен System, добавленном при создании проекта C#:
b. Если используется версия EventHandler, не являющаяся общей, и имеется пользовательский класс, производный от EventArgs, объявите свое событие внутри класса публикации и используйте свой делегат как тип:
c. Если используется общая версия, то пользовательский делегат не требуется. Вместо этого необходимо задать тип события как EventHandler<CustomEventArgs>, заключив название своего класса в угловые скобки.
Example The following example demonstrates the previous steps given by using a custom EventArgs class and EventHandler<(Of <(TEventArgs>)>) as the event type.
Пример В следующем примере демонстрируются предыдущие шаги, полученные при использовании пользовательского класса EventArgs и EventHandler<(Of <(TEventArgs>)>) в качестве типа события. ß---
//Class that subscribes to an event class Subscriber { private string id; public Subscriber(string ID, Publisher pub) { id = ID; // Subscribe to the event using C# 2.0 syntax pub.RaiseCustomEvent += HandleCustomEvent; }
// Define what actions to take when the event is raised. void HandleCustomEvent(object sender, CustomEventArgs e) { Console.WriteLine(id + " received this message: {0}", e.Message); } }
class Program { static void Main(string[] args) { Publisher pub = new Publisher(); Subscriber sub1 = new Subscriber("sub1", pub); Subscriber sub2 = new Subscriber("sub2", pub);
// Call the method that raises the event. pub.DoSomething();
// Keep the console window open Console.WriteLine("Press Enter to close this window."); Console.ReadLine();
} } }
ß----
|
||||||||||||||
Последнее изменение этой страницы: 2017-01-19; просмотров: 101; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.70.108 (0.006 с.) |