Главная Обратная связь

Дисциплины:






Основы C#. Урок 33. События



На этом занятии мы с вами рассмотрим создание событий в C#. С помощью событий класс извещает, что в нем что-то произошло. События часто создаются в классах используемых для создания пользовательского интерфейса - например у кнопки есть событие, наступающее при щелчке на этой кнопке. События также могут присутствовать и в классах, не предназначенных для создания пользовательского интерфейча - например, они могут быть в классах консолького приложения. Именно для такого класса мы и рассмотрим создание события.

События в C# основаны на делегатах. Это означает, что событие имеет тип определенного делегата. Вот пример класса с событием в нем:

using System;namespace test{ //Объявление делегата. delegatevoid EventHandler(); //Объявление класса с событием. class MyEvent { //Объвление события на основе делегата. publicevent EventHandler f; //Объвление метода, в котором вызывается событие. publicvoid func() { f(); } } //Класс для тестирования события класса MyEvent. class Test { //Обработчик для события. publicstaticvoid z() { Console.WriteLine("Вызов обработчика"); } //Метод main. staticvoid Main(string[] args) { //Создаем экземпляр класса с событием. MyEvent w=new MyEvent(); //Добавление обработчика события. w.f+=new EventHandler(z); //Вызов метода, в котором вызывается событие. w.func(); } }}

Сначала мы в строке

... delegatevoid EventHandler(); ...

объявляем делегат. Параметров у него нет (хотя могут и быть), тип - void.

Затем мы объявляем класс MyEvent, внутри которого объвляем событие f (имя произвольное):

... publicevent EventHandler f; ...

Синтаксис тут такой - модификатор доступа (у нас public), затем ключевое слово event, потом имя делегата, на основании которого мы создаем наше событие (у нас это EventHandler) и, наконец, имя произольное событие (f). Обратите внимание, что событие появится на вкладке ClassView:

Далее в нашем классе с событиями мы в некотором методе это событие вызываем:

... publicvoid func() { f(); } ...

Класс с событием создан. Далее мы пишем класс Test для тестирования события. В этом классе мы создаем обработчик z для события (имя обработчика произвольное). Этот метод мы объвляем как статический.

Далее мы объявляем экземпляр нашего класса MyEvent (того самого, в котором мы объявили событие):

... MyEvent w=new MyEvent(); ...

Остается теперь указать, что за обработчик будет у события f класса MyEvent. Это мы делаем в строке

... w.f+=new EventHandler(z); ...

Этой строчкой мы указываем, что событие f будет обрабатывать метод z класса Test.

Если мы запустим наше программу, то на вызовется обработчик для события (т. е. выведется надпись "Вызов обработчика"):



Обратите внимание, что обработчик для события мы пишем в тестовом классе (т. е. в классе Test, в котором мы объявили экземпляр нашего класса с событиями). Так мы делаем всегда, и не только на пратформе .NET.

 





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...