Sdílet prostřednictvím


Přehled událostí (model 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 zveřejňuje předdefinovanou sadu událostí, 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 Click událost. Pokud uživatel klikne na formulář, spustí se kód obslužné rutiny události formuláře Click .

Poznámka:

Mnoho událostí probíhá ve spojení s jinými událostmi. Například v průběhu DoubleClick události, ke které dochází, dojde k MouseDownudálosti , MouseUpa Click události.

Informace o tom, jak vyvolat a využívat událost, 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 označují ukazatele na funkce, běžně používané v jazyce Visual C++ a jiný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 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 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 události obvykle vytvoříte událost vícesměrového vysílání. 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 (Delegáti vícesměrového vysílání).

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 Remove metody, která ji má odebrat.

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 vázán za běhu na libovolnou metodu, jejíž podpis odpovídá obslužné rutině 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é