Sdílet prostřednictvím


Přehled událostí (Windows Forms .NET)

Událost je akce, na kterou můžete v kódu odpovědět nebo na ni "zpracovat". Události můžou být generovány akcí uživatele, například kliknutím myši nebo stisknutím klávesy, programovým kódem 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í, pro které můžete programovat. Pokud dojde k jedné z těchto událostí a existuje kód přidružené obslužné rutiny události, 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 v průběhu DoubleClick události dochází k událostem MouseDown, MouseUpa Click.

Informace o vyvolání a využívání události naleznete v tématu Zpracování a vyvolávání událostí.

Delegáti a jejich role

Delegáti jsou třídy, které se běžně používají v rozhraní .NET k vytváření mechanismů zpracování událostí. Delegáti zhruba odpovídají ukazatelům na funkce, běžně používaným v jazyce 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í. Pokud 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 se pro oznámení událostí zadáním obslužné metody. Když dojde k události, delegát volá vázanou metodu. Další informace o definování delegátů naleznete v tématu Zpracování a vyvolávání událostí.

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 obvykle vytvoříte vícesměrovou událost. Výjimkou může být událost, která vede ke konkrétnímu postupu (například zobrazení dialogového okna), který by 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 volání metod, ke kterým je vázán. Delegát typu multicast podporuje metodu Combine pro přidání metody do seznamu vyvolání a metodu Remove pro její odstraně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í vázání několika událostí na stejnou metodu, což umožňuje notifikaci ve stylu „mnoho na jednoho“. 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 za běhu vázán na libovolnou metodu, jejíž podpis odpovídá obslužné metodě 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é