Přehled událostí (Windows Forms)
Událost je akce, na kterou můžete v kódu reagovat nebo na ni "zpracovat". Události mohou být generovány akcí uživatele, například kliknutím myši nebo stisknutím klávesy; kódem programu; nebo systémem.
Aplikace řízené událostmi spouštějí kód v reakci na událost. Každý formulář a ovládací prvek nabízí předdefinovanou sadu událostí, které můžete naprogramovat. Pokud dojde k jedné z těchto událostí a v přidružené obslužné rutině události existuje kód, je tento kód vyvolán.
Typy událostí vyvolaných objektem se liší, ale většina ovládacích prvků se běžně používá u mnoha typů. Například většina objektů zpracuje událost Click. Pokud uživatel klikne na formulář, spustí se kód v Click obslužné rutině události formuláře.
Poznámka
Mnoho událostí probíhá ve spojení s jinými událostmi. Například během události DoubleClick dochází k událostem MouseDown, MouseUpa Click.
Informace o tom, jak vyvolat a využívat událost, naleznete v tématu Události.
Delegáti a jejich role
Delegáti jsou třídy, které se běžně používají v rozhraní .NET Framework k vytváření mechanismů zpracování událostí. Delegáti zhruba odpovídají ukazatelům na funkce, které se běžně používají ve Visual C++ a dalších objektově orientovaných jazycích. Na rozdíl od ukazatelů na funkce jsou však delegáti objektově orientovaní, typově bezpeční a zabezpečení. Kromě toho, kde ukazatel funkce obsahuje pouze odkaz na konkrétní funkci, delegát se skládá z odkazu na objekt a odkazy na jednu nebo více metod v rámci objektu.
Tento model událostí používá delegáty k vytvoření vazby událostí na metody, které se používají k jejich zpracování. Delegát umožňuje ostatním třídám registrovat pro oznámení událostí zadáním metody obslužné rutiny. Když dojde k události, delegát volá vázanou metodu. Další informace o definování delegátů naleznete v tématu Události.
Delegáti mohou být vázáni na jednu metodu nebo na více metod, které se označují jako vícesměrové vysílání. Při vytváření delegáta pro událost vy (nebo Windows) obvykle vytváříte multicastovou událost. Výjimkou může být událost, která má za následek konkrétní proceduru (například zobrazení dialogového okna), která by se logicky neopakovala vícekrát na událost. Informace o tom, jak vytvořit delegáta vícesměrového vysílání, naleznete v tématu Jak kombinovat delegáty (vícesměrové delegáty).
Delegát vícesměrového vysílání udržuje seznam vyvolání metod, ke které je vázán. Delegát vícesměrového vysílání podporuje metodu Combine pro přidání metody do seznamu vyvolání a metodu Remove pro její odebrání.
Když aplikace zaznamená událost, ovládací prvek vyvolá událost vyvoláním delegáta pro danou událost. Delegát zase volá vázanou metodu. V nejběžnějším případě (delegát vícesměrového vysílání) delegát volá každou vázanou metodu v seznamu volání, která poskytuje oznámení 1:N. Tato strategie znamená, že ovládací prvek nemusí udržovat seznam cílových objektů pro oznámení události – delegát zpracovává veškerou registraci a oznámení.
Delegáti také umožňují, aby několik událostí bylo vázáno na stejnou metodu, což umožňuje oznámení M:1. Například událost kliknutí na tlačítko a událost menu-command–click může vyvolat stejný delegát, který pak volá jednu metodu pro zpracování těchto samostatných událostí stejným způsobem.
Mechanismus vazby používaný s delegáty je dynamický: delegát může být během běhu programu vázán na libovolnou metodu, jejíž podpis odpovídá podpisu obslužné rutiny události. Pomocí této funkce můžete nastavit nebo změnit vázanou metodu v závislosti na podmínce a dynamicky připojit obslužnou rutinu události k ovládacímu prvku.
Viz také
.NET Desktop feedback