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