Sdílet prostřednictvím


UIElement.AddHandler Metoda

Definice

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost a přidá obslužnou rutinu do kolekce obslužné rutiny v aktuálním prvku.

Přetížení

AddHandler(RoutedEvent, Delegate)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost a přidá obslužnou rutinu do kolekce obslužné rutiny v aktuálním prvku.

AddHandler(RoutedEvent, Delegate, Boolean)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost a přidá obslužnou rutinu do kolekce obslužné rutiny v aktuálním prvku. Zadejte handledEventsToo jako true, aby byla zadaná obslužná rutina vyvolána pro směrovanou událost, která již byla označena jako zpracována jiným prvkem podél trasy události.

AddHandler(RoutedEvent, Delegate)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost a přidá obslužnou rutinu do kolekce obslužné rutiny v aktuálním prvku.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

Parametry

routedEvent
RoutedEvent

Identifikátor směrované události, která se má zpracovat.

handler
Delegate

Odkaz na implementaci obslužné rutiny.

Implementuje

Poznámky

Stejnou obslužnou rutinu pro stejnou událost můžete přidat vícekrát bez vyvolání výjimky. Obslužná rutina je však vyvolána vícekrát při zpracování události. Proto zvažte, jak toto chování může mít vedlejší účinky, které by měly být zohledněny v implementaci obslužné rutiny.

Tuto metodu obvykle používáte k poskytnutí implementace přístupového objektu "add" pro model přístupu k událostem Microsoft .NET vlastní směrované události.

Platí pro

AddHandler(RoutedEvent, Delegate, Boolean)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost a přidá obslužnou rutinu do kolekce obslužné rutiny v aktuálním prvku. Zadejte handledEventsToo jako true, aby byla zadaná obslužná rutina vyvolána pro směrovanou událost, která již byla označena jako zpracována jiným prvkem podél trasy události.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

Parametry

routedEvent
RoutedEvent

Identifikátor směrované události, která se má zpracovat.

handler
Delegate

Odkaz na implementaci obslužné rutiny.

handledEventsToo
Boolean

true zaregistrovat obslužnou rutinu tak, aby byla vyvolána, i když je směrovaná událost označena v datech události; false zaregistrovat obslužnou rutinu s výchozí podmínkou, že nebude vyvolána, pokud je směrovaná událost již označena jako zpracována.

Výchozí hodnota je false.

Nepožádejte se rutinně o opětovné zpracování směrované události.

Příklady

Následující příklad implementuje obslužnou rutinu vyvolanou na Initialized události na stránce, která připojí definovanou obslužnou rutinu k jednomu z pojmenovaných prvků na stránce pomocí handledEventsTootrue. Tato obslužná rutina by byla vyvolána i v případě, že jiný prvek podél trasy označil data sdílené události jako zpracován před dosažením prvku zpracování v trase.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

Poznámky

Praktické zpracování vstupních událostí nízké úrovně je složitý úkol. Mnoho ovládacích prvků implementuje chování, kdy je určitá událost označena jako zpracována a je nahrazena jinou intuitivnější událostí. Obecně platí, že ovládací prvek označí vstupní událost platformy jako obslužnou, pokud je k tomu nějaký záměr návrhu. V určitých scénářích nemusí být záměry návrhu tím, co vaše konkrétní zpracování vstupní události vyžaduje. Pro tyto scénáře je vhodné registrovat obslužné rutiny s handledEventsToo jako true. Ale neměli byste to dělat rutinně. Vyvolání obslužných rutin v reakci na všechny události i v případě, že zpracování zkomplikuje vlastní logiku zpracování událostí aplikace. Pokud je logika obslužné rutiny podstatná, může se zobrazit snížení výkonu. Měli byste si rezervovat použití připojení obslužných rutin pro již zpracovávané události v situacích, kdy jste již během procesu vývoje zjistili, že určité ovládací prvky zpracovávají události, které stále chcete zpracovat pomocí aplikační logiky.

Další technikou, jak se vyhnout chování zpracování tříd u určitých kombinací řízení událostí, je použít alternativu náhledu dané události. Pokud je například MouseLeftButtonDown označeno zpracováním tříd, můžete místo toho přidat obslužné rutiny pro PreviewMouseLeftButtonDown.

Stejnou obslužnou rutinu pro stejnou událost můžete přidat vícekrát bez vyvolání výjimky. Obslužná rutina je však vyvolána vícekrát při zpracování události. Proto zvažte, jak toto chování může mít vedlejší účinky, které by měly být zohledněny v implementaci obslužné rutiny.

Tuto metodu obvykle používáte k poskytnutí implementace přístupového objektu "add" pro model přístupu k událostem Microsoft .NET vlastní směrované události.

Platí pro