Udostępnij za pośrednictwem


UIElement.AddHandler Metoda

Definicja

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.

Przeciążenia

AddHandler(RoutedEvent, Delegate)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.

AddHandler(RoutedEvent, Delegate, Boolean)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie. Określ handledEventsToo jako true, aby podana procedura obsługi była wywoływana dla zdarzenia kierowanego, które zostało już oznaczone jako obsługiwane przez inny element wzdłuż trasy zdarzeń.

AddHandler(RoutedEvent, Delegate)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.

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

Identyfikator zdarzenia kierowanego do obsłużenia.

handler
Delegate

Odwołanie do implementacji programu obsługi.

Implementuje

Uwagi

Tę samą procedurę obsługi dla tego samego zdarzenia można dodać wiele razy bez zgłaszania wyjątku. Jednak procedura obsługi jest wywoływana wielokrotnie, gdy zdarzenie jest obsługiwane. W związku z tym należy wziąć pod uwagę, jak to zachowanie może mieć skutki uboczne, które powinny być uwzględniane w implementacji programu obsługi.

Ta metoda zwykle służy do zapewniania implementacji metody dostępu "dodaj" dla wzorca dostępu zdarzeń platformy Microsoft .NET dla niestandardowego zdarzenia kierowanego.

Dotyczy

AddHandler(RoutedEvent, Delegate, Boolean)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie. Określ handledEventsToo jako true, aby podana procedura obsługi była wywoływana dla zdarzenia kierowanego, które zostało już oznaczone jako obsługiwane przez inny element wzdłuż trasy zdarzeń.

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

Identyfikator zdarzenia kierowanego do obsłużenia.

handler
Delegate

Odwołanie do implementacji programu obsługi.

handledEventsToo
Boolean

true zarejestrować program obsługi, tak aby był wywoływany nawet wtedy, gdy zdarzenie kierowane jest oznaczone jako obsługiwane w danych zdarzenia; false, aby zarejestrować procedurę obsługi z domyślnym warunkiem, że nie zostanie wywołany, jeśli zdarzenie kierowane jest już oznaczone jako obsługiwane.

Wartość domyślna to false.

Nie należy rutynowo prosić o ponowne obsługa zdarzenia kierowanego.

Przykłady

Poniższy przykład implementuje procedurę obsługi wywoływaną na zdarzeniu Initialized na stronie, która dołącza zdefiniowaną procedurę obsługi do jednego z nazwanych elementów na stronie przy użyciu handledEventsTootrue. Ta procedura obsługi zostanie wywołana nawet wtedy, gdy inny element wzdłuż trasy oznaczył udostępnione dane zdarzenia jako obsługiwane przed dotarciem do elementu obsługi w trasie.

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

Uwagi

Przetwarzanie zdarzeń wejściowych niskiego poziomu w praktyczny sposób jest złożonym zadaniem. Wiele kontrolek implementuje zachowanie, w którym określone zdarzenie jest oznaczone jako obsługiwane i jest zastępowane przez inne bardziej intuicyjne zdarzenie. Ogólnie rzecz biorąc, kontrolka będzie oznaczać zdarzenie wejściowe platformy jako obsługiwane, jeśli istnieje jakiś zamiar projektowania w tym celu. W niektórych scenariuszach intencje projektowe mogą nie być tym, czego wymaga Twoja konkretna obsługa zdarzenia wejściowego. W przypadku tych scenariuszy rejestrowanie programów obsługi przy użyciu handledEventsToo jest odpowiednie, ponieważ true. Ale nie należy tego robić rutynowo. Wywoływanie procedur obsługi w odpowiedzi na wszystkie zdarzenia, nawet jeśli są obsługiwane, komplikuje własną logikę przetwarzania zdarzeń aplikacji. Jeśli logika obsługi jest znacząca, może wystąpić spadek wydajności. Należy zarezerwować użycie dołączania procedur obsługi dla zdarzeń już obsługiwanych w sytuacjach, w których już odnaleziono w procesie programowania, że niektóre kontrolki obsługują zdarzenia, które nadal mają być obsługiwane za pomocą logiki aplikacji.

Inną techniką unikania zachowania obsługi klas niektórych kombinacji kontroli zdarzeń jest użycie alternatywnej wersji zapoznawczej tego zdarzenia. Jeśli na przykład MouseLeftButtonDown jest oznaczona jako obsługiwana przez obsługę klas, może być możliwe dodanie procedur obsługi dla PreviewMouseLeftButtonDown.

Tę samą procedurę obsługi dla tego samego zdarzenia można dodać wiele razy bez zgłaszania wyjątku. Jednak procedura obsługi jest wywoływana wielokrotnie, gdy zdarzenie jest obsługiwane. W związku z tym należy wziąć pod uwagę, jak to zachowanie może mieć skutki uboczne, które powinny być uwzględniane w implementacji programu obsługi.

Ta metoda zwykle służy do zapewniania implementacji metody dostępu "dodaj" dla wzorca dostępu zdarzeń platformy Microsoft .NET dla niestandardowego zdarzenia kierowanego.

Dotyczy