Compartilhar via


UIElement.RemoveHandler(RoutedEvent, Delegate) Método

Definição

Remove o manipulador de eventos roteados especificado desse 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 roteado ao qual o manipulador está anexado.

handler
Delegate

A implementação do manipulador específico para remover da coleção de manipuladores de eventos neste elemento.

Implementações

Exemplos

O exemplo a seguir usa RemoveHandler como parte de uma definição de wrapper de evento.

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

Comentários

O cenário mais comum para usar essa API é quando você implementa o evento "wrapper" clr (common language runtime) associado a um evento roteado personalizado, especificamente quando você implementa a lógica "remove" para manipuladores no nível clr. O exemplo que segue esta seção de comentários ilustra esse cenário.

Chamar esse método não terá efeito se não houver manipuladores registrados com critérios que correspondam aos parâmetros de entrada para a chamada do método.

Se mais de um manipulador for anexado que corresponda aos critérios, somente o primeiro manipulador no repositório do manipulador de eventos será removido. Esse comportamento é consistente com o comportamento CLR do -= operador.

Nem routedEvent nem handler pode ser null. Tentar fornecer um valor como null gerará uma exceção.

Esse método ignora as informações de handledEventsToo parâmetro, que são fornecidas se o manipulador foi adicionado pela primeira vez com a assinatura que permite o AddHandler(RoutedEvent, Delegate, Boolean) tratamento de eventos já tratados. Qualquer tipo de manipulador é removido.

Aplica-se a

Confira também