Читаем C# 4.0 полное руководство - 2011 полностью

// Код добавления события в цепочку событий.

}

remove {

// Код удаления события из цепочки событий.

}

}

В эту форму входят два аксессора событий:addиremove.Аксессорaddвызывается, когда обработчик событий добавляется в цепочку событий с помощью оператора +=. В то же время аксессорremoveвызывается, когда обработчик событий удаляется из цепочки событий с помощью оператора -=.

Когда вызывается аксессорaddилиremove,он принимает в качестве параметра добавляемый или удаляемый обработчик. Как и в других разновидностях аксессоров, этот неявный параметр называетсяvalue.Реализовав аксессорыaddилиremove,можно организовать специальную схему хранения обработчиков событий. Например, обработчики событий можно хранить в массиве, стеке или очереди.

Ниже приведен пример программы, демонстрирующей аксессорную форму события. В ней для хранения обработчиков событий используется массив. Этот массив состоит всего из трех элементов, поэтому в цепочке событий можно хранить одновременно только три обработчика.

// Создать специальные средства для управления списками // вызова обработчиков событий.

using System;

// Объявить тип делегата для события.

delegate void MyEventHandler;    ,

// Объявить класс для хранения максимум трех событий, class MyEvent {

MyEventHandler[] evnt = new MyEventHandler[3];

public event MyEventHandler SomeEvent {

// Добавить событие в список, add { int i;

for(i=0; i < 3; i++) if(evnt[i] == null) { evnt[i] = value; break;

}

if (i == 3) Console.WriteLine("Список событий заполнен.");

}

// Удалить событие из списка, remove { int i;

for(i=0; i < 3; i++) if(evnt[i] == value) { evnt[i] = null; break;

}

if (i == 3) Console.WriteLine("Обработчик событий не найден.");

}

}

// Этот .метод вызывается для запуска событий, public void OnSomeEvent    {

for(int i=0; i < 3; i++)

if(evnt[i] != null) evnt[i];

}

}

// Создать ряд классов, использующих делегат MyEventHandler. class W {

public void Whandler {

Console.WriteLine("Событие получено объектом W");

}

}

class X {

public void Xhandler {

Console.WriteLine("Событие получено объектом X");

}

}

class Y {

public void Yhandler {

Console.WriteLine("Событие получено объектом Y");

class Z {

public void Zhandler {

Console.WriteLine("Событие получено объектом Z");

}

}

class EventDemo5 { static void Main {

MyEvent evt = new MyEvent;

// Добавить обработчики в цепочку событий.

Console.WriteLine("Добавление событий."); evt.SomeEvent += wOb.Whandler; evt.SomeEvent += xOb.Xhandler; evt.SomeEvent += yOb.Yhandler;

// Сохранить нельзя - список заполнен, evt.SomeEvent += zOb.Zhandler;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных