Freigeben über


UIElement.RemoveHandler(RoutedEvent, Delegate) Methode

Definition

Entfernt den angegebenen Routingereignishandler aus diesem Element.

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

Parameter

routedEvent
RoutedEvent

Der Bezeichner des Routingereignisses, für das der Handler angefügt wurde.

handler
Delegate

Die spezifische Handlerimplementierung, die aus der Ereignishandlerauflistung dieses Elements entfernt werden soll.

Implementiert

Beispiele

Im folgenden Beispiel wird als Teil einer Ereigniswrapperdefinition verwendet RemoveHandler .

public static readonly RoutedEvent TapEvent = EventManager.RegisterRoutedEvent(
    "Tap", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyButtonSimple));

// Provide CLR accessors for the event
public event RoutedEventHandler Tap
{
        add { AddHandler(TapEvent, value); } 
        remove { RemoveHandler(TapEvent, value); }
}
Public Shared ReadOnly TapEvent As RoutedEvent = EventManager.RegisterRoutedEvent("Tap", RoutingStrategy.Bubble, GetType(RoutedEventHandler), GetType(MyButtonSimple))

' Provide CLR accessors for the event
Public Custom Event Tap As RoutedEventHandler
    AddHandler(ByVal value As RoutedEventHandler)
        Me.AddHandler(TapEvent, value)
    End AddHandler

    RemoveHandler(ByVal value As RoutedEventHandler)
        Me.RemoveHandler(TapEvent, value)
    End RemoveHandler

    RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Me.RaiseEvent(e)
    End RaiseEvent
End Event

Hinweise

Das häufigste Szenario für die Verwendung dieser API besteht darin, dass Sie das "Common Language Runtime"-Ereignis (CLR) implementieren, das einem benutzerdefinierten Routingereignis zugeordnet ist, insbesondere wenn Sie die Logik "remove" für Handler auf CLR-Ebene implementieren. Im folgenden Beispiel wird dieses Szenario veranschaulicht.

Das Aufrufen dieser Methode hat keine Auswirkung, wenn keine Handler mit Kriterien registriert wurden, die den Eingabeparametern für den Methodenaufruf entsprechen.

Wenn mehrere Handler angefügt sind, die den Kriterien entsprechen, wird nur der erste Handler im Ereignishandlerspeicher entfernt. Dieses Verhalten entspricht dem CLR-Verhalten des -= Operators.

Weder routedEvent noch handler darf es sein null. Der Versuch, einen beiden Wert bereitzustellen, löst null eine Ausnahme aus.

Diese Methode ignoriert die handledEventsToo Parameterinformationen, die bereitgestellt werden, wenn der Handler zuerst mit der Signatur hinzugefügt wurde, die die AddHandler(RoutedEvent, Delegate, Boolean) Behandlung bereits behandelter Ereignisse ermöglicht. Jeder Handlertyp wird entfernt.

Gilt für

Siehe auch