UIElement.AddHandler Metoda

Definicja

Dodaje program 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 program 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 program 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 , czy true podana procedura obsługi ma być 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 program 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 wiele razy, 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 zapewnienia implementacji metody dostępu "dodaj" dla wzorca dostępu do zdarzeń platformy Microsoft .NET dla niestandardowego zdarzenia kierowanego.

Dotyczy

AddHandler(RoutedEvent, Delegate, Boolean)

Dodaje program 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 , czy true podana procedura obsługi ma być 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 aby zarejestrować program obsługi w taki sposób, aby był wywoływany nawet wtedy, gdy zdarzenie kierowane jest oznaczone jako obsługiwane w danych zdarzenia; false aby zarejestrować program obsługi z warunkiem domyślnym, że nie zostanie on wywołany, jeśli zdarzenie kierowane jest już oznaczone jako obsługiwane.

Wartość domyślna to false.

Nie należy rutynowo prosić o ponowne przesłanie zdarzenia kierowanego.

Przykłady

Poniższy przykład implementuje procedurę obsługi wywoływaną na zdarzeniu na Initialized stronie, która dołącza zdefiniowaną procedurę obsługi do jednego z nazwanych elementów na stronie przy użyciu polecenia handledEventsToo true. 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 innym bardziej intuicyjnym zdarzeniem. 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 te intencje projektowe mogą nie być tym, czego wymaga Twoja konkretna obsługa zdarzenia wejściowego. Jest to przeznaczone dla tych scenariuszy, w których są rejestrowane programy obsługi zgodnie true z potrzebamihandledEventsToo. 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 już obsługiwanych zdarzeń w sytuacjach, w których zostały już odnalezione podczas procesu 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 kontrolek 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żna zamiast tego dodać programy obsługi 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 wiele razy, 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 zapewnienia implementacji metody dostępu "dodaj" dla wzorca dostępu do zdarzeń platformy Microsoft .NET dla niestandardowego zdarzenia kierowanego.

Dotyczy