События-это не просто действия пользователя. Например
- Когда вы щелкаете мышью-это события щелчка мыши.
- Когда вы нажимаете любую клавишу на клавиатуре – это события нажатия клавиш
- Когда вы обновляете свою веб-страницу – это события загрузки страницы
- При перемещении курсора мыши — это наведение мыши события и т.д.
Поэтому, когда вы предпринимаете какие-либо действия, такие как нажатие клавиши, движения мыши, щелчки и т. д., возникает событие. Позвольте мне прояснить это подробнее. Например, вы заполнили онлайн-форму и нажмите на кнопку Отправить.
- В фоновом
button_click()
режиме событие возникло. - Это событие вызывает и выполняет связанную функцию
Submit_Click()
. - Эта функция обрабатывает ваш запрос и отправляет информацию о странице в базу данных.
Как события работают с делегатами?
Делегаты используются для ссылки на метод. Событие связывается с обработчиком событий с помощью делегатов. Когда событие возникает, оно посылает сигнал делегатам, и делегаты выполняют соответствующую функцию.
Что такое модель издатель-подписчик?
В любом случае есть две части программы обработки событий. Одна часть является издателем, который содержит определение событий и делегатов, а другая часть-подписчиком, который принимает событие и предоставляет обработчик событий.
- Событие создается с помощью ключевого слова event.
- Событие не имеет возвращаемого типа и всегда является пустым.
- Все события основаны на делегатах.
- Все опубликованные события должны иметь объект прослушивания.
- Все события должны быть определены, начиная с ключевого слова «On».
Давайте разберемся во всех этих теориях на примере программирования
Перед просмотром примеров программирования вы должны знать последовательные шаги для управления событиями.
Шаг 1: Определение делегата
Шаг 2: Определение события с тем же именем делегатов.
Шаг 3: Определите обработчик событий, которые отвечают при возникновении события.
Шаг 4: Вы должны иметь метод, готовый для делегатов.
Эта программа просто добавляет два числа. Единственное условие — если сумма чисел нечетна, он запускает событие, которое печатает сообщение с помощью делегатов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace event_programming { //This is Subscriber Class class Program { static void Main(string[] args) { AddTwoNumbers a = new AddTwoNumbers(); //Event gets binded with delegates a.ev_OddNumber += new AddTwoNumbers.dg_OddNumber(EventMessage); a.Add(); Console.Read(); } //Delegates calls this method when event raised. static void EventMessage() { Console.WriteLine("********Event Executed : This is Odd Number**********"); } } //This is Publisher Class class AddTwoNumbers { public delegate void dg_OddNumber(); //Declared Delegate public event dg_OddNumber ev_OddNumber; //Declared Events public void Add() { int result; result = 5 + 4; Console.WriteLine(result.ToString()); //Check if result is odd number then raise event if((result % 2 != 0) && (ev_OddNumber != null)) { ev_OddNumber(); //Raised Event } } } } |
1
Смотрите эту фотографию. На коде есть какая-то маркировка. Мы пройдем через маркировку и разберемся в самом процессе.
- Созданный Делегат
1 |
public delegate void dg_OddNumber(); |
2. Создано Событие
1 |
public event dg_OddNumber ev_OddNumber; |
3. ev_OddNumber()
событие будет выполнено, если найдено нечетное число.
4. В классе AddTwoNumbers есть функция void Add()
, которая добавляет два числа. Если сумма числа Нечетна, то оно подняло ev_OddNumber
событие основная функция, это ev_OddNumber
обработчик событий вызывает делегат
1 |
a.ev_OddNumber += new AddTwoNumbers .dg_OddNumber(EventMessage); |
5. Затем, наконец, делегат выполняет функцию.
1 2 3 4 |
static void EventMessage() { Console.WriteLine("********Event Executed : This is Odd Number**********"); } |
Еще больше примеров с событиями у нас сайте: пример 1 пример 2