События WinForms - C#

Узнай цену своей работы

Формулировка задачи:

Я так понимаю событие это приватный делегат с функционалом добавления и удаления методов к этому самому делегату. Т.е формально при наступлении события т.е передачи конструктору события аргумента идентичного сигнатуре делегата, все методы, которые "пришиты" к событию синхронно или асинхронно начнут выполняться. У меня два вопроса, почему это называется "обратным вызовом", если можно по - русски, я пытался читать про события но все примеры настолько притянуты за уши, что овер 30 строк кода можно было бы заменить одним if-ом, образно говоря. И у меня ещё такой вопрос, в GUI приложениях в дизайнере есть предопределённые обработчики событий. Например
void Form_Load(object Sender, event e)
{
}
я так понимаю Sender это объект, который вызывает событие? А что значит вызывает? Передает конструктору события что то, и кто есть этот сендер например в приведённом мною примере, System.Windows.Forms.Form ? И что делает event e? Синхронно выполняет весь код что я напишу внутри кнопки? Заранее спасибо если сможете мне доходчиво объяснить.

Решение задачи: «События WinForms»

textual
Листинг программы
namespace MyNamespace
{
      delegate void PushPrinterButton(); // Объявление делегата
      class Program
      {
            static void Main(string[] Args)
            {
                Mouse mouse = new Mouse();
                // Подписка на событие с указанием метода
                mouse.Click += new PushPrinterButton(mouse.OnMouseClick);
                mouse.DoEvent(); //Вызывается событие
            }
      }
      class Mouse
      {
           public event PushPrinterButton Click; // Объявление события
           public void DoEvent() // Генерация события
           {
                if (Click != null) // проверка что на метод есть подписка
                Click(); // запуск события
           }
           public void OnMouseClick()  // Метод для события  (обработчик события)
           {
                Console.WriteLine("Произошло нажатие");
                Console.ReadLine();
           }
       }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5