Создание Windows-приложений на основе Visual C#

         

С помощью событий приложения Windows


С помощью событий приложения Windows получают уведомления о том, что что-то произошло. Например, при нажатии на кнопку мыши приложение, в окне которого вы произвели это действие, будет уведомлено об этом событии. То же самое происходит, когда вы делаете что-то с помощью клавиатуры. Событийная модель стала основой современного программирования. Обработчик события реализуется на языке С#, как правило, в виде делегата.
Создайте новое консольное приложение и назовите его Event (Событие). Рассмотрим листинг этого приложения:
Листинг 1.6.
(html, txt)
Сначала мы в строке
delegate void Mydelegate();
объявляем делегат. Параметров у него нет (хотя могут и быть), тип — void.
Затем мы объявляем класс Button, внутри которого объявляем событие Sobitie (имя произвольное):
... public event Mydelegate Sobitie; ...
Синтаксис следующий: модификатор доступа (здесь — public), затем ключевое слово event, потом имя делегата, на основании которого мы создаем наше событие (здесь Mydelegate) и, наконец, имя события (Sobitie). Обратите внимание, что событие появится на вкладке Class View (рис. 1.36).

Рис. 1.36.  Событие в окне Class View. Значок события имеет характерный вид молнии
Далее в нашем классе с событиями мы в некотором методе это событие вызываем:
... public void MetoddlyaSobitiya()
{ Sobitie(); }
Класс с событием создан. Далее в классе Class1 мы объявляем экземпляр btn нашего класса Button (того самого, в котором мы объявили событие):
Button btn = new Button();
Остается теперь указать, что за обработчик будет у события Sobitie класса Button. Это мы делаем в строке
btn.Sobitie += new Mydelegate(Metodobrabotchik);
Этой строчкой мы указываем, что событие Sobitie будет обрабатывать метод Metodobrabotchik класса Class1. Когда мы указываем этот метод, IntellSense предложит дважды нажать клавишу Tab для создания шаблона метода Metodobrabotchik. Сделав это, нам останется только добавить код в методе — здесь вывод строки "Произошло событие":



private static void Metodobrabotchik () { Console.WriteLine("Произошло событие"); }

Результатом выполнения этой программы станет вывод на экран строки "Произошло событие" (рис. 1.37).

Рис. 1.37.  Результат приложение Event
Для того чтобы лучше разобраться в логике этого листинга, желательно просмотреть ее выполнение в пошаговом режиме (используйте клавишу F11).


... public void MetoddlyaSobitiya()
{ Sobitie(); }
Класс с событием создан. Далее в классе Class1 мы объявляем экземпляр btn нашего класса Button (того самого, в котором мы объявили событие):
Button btn = new Button();
Остается теперь указать, что за обработчик будет у события Sobitie класса Button. Это мы делаем в строке
btn.Sobitie += new Mydelegate(Metodobrabotchik);
Этой строчкой мы указываем, что событие Sobitie будет обрабатывать метод Metodobrabotchik класса Class1. Когда мы указываем этот метод, IntellSense предложит дважды нажать клавишу Tab для создания шаблона метода Metodobrabotchik. Сделав это, нам останется только добавить код в методе — здесь вывод строки "Произошло событие":

private static void Metodobrabotchik () { Console.WriteLine("Произошло событие"); }

Результатом выполнения этой программы станет вывод на экран строки "Произошло событие" (рис. 1.37).

Рис. 1.37.  Результат приложение Event
Для того чтобы лучше разобраться в логике этого листинга, желательно просмотреть ее выполнение в пошаговом режиме (используйте клавишу F11).

Содержание раздела