UIElement.RemoveHandler(RoutedEvent, Delegate) Método

Definição

Remove o gestor de eventos encaminhados especificado deste elemento.

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)

Parâmetros

routedEvent
RoutedEvent

O identificador do evento encaminhado para o qual o manipulador está ligado.

handler
Delegate

A implementação específica do handler para remover da coleção de handlers de eventos neste elemento.

Implementações

Exemplos

O exemplo seguinte é usado RemoveHandler como parte de uma definição de event wrapper.

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

Observações

O cenário mais comum para usar esta API é quando se implementa o evento "wrapper" de common language runtime (CLR) associado a um evento encaminhado personalizado, especificamente quando se implementa a lógica de "remove" para handlers ao nível CLR. O exemplo que se segue a esta secção de observações ilustra este cenário.

Chamar este método não tem efeito se não houver handlers registados com critérios que correspondam aos parâmetros de entrada para a chamada do método.

Se mais do que um handler estiver associado que corresponda aos critérios, apenas o primeiro handler na loja de event handlers é removido. Este comportamento é consistente com o comportamento CLR do -= operador.

Nem routedEvent pode handler ser null. Tentar fornecer qualquer um dos valores como null irá levantar uma exceção.

Este método ignora a handledEventsToo informação dos parâmetros, que é fornecida se o handler foi primeiro adicionado com a AddHandler(RoutedEvent, Delegate, Boolean) assinatura que permite o tratamento de eventos já tratados. Qualquer tipo de manipulador é removido.

Aplica-se a

Ver também