UIElement.RemoveHandler(RoutedEvent, Delegate) Метод

Определение

Удаляет указанный обработчик маршрутизируемого события из этого элемента.

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)

Параметры

routedEvent
RoutedEvent

Идентификатор перенаправленного события, к которому прикреплен обработчик.

handler
Delegate

Конкретная реализация удаляемого обработчика из коллекции обработчиков событий этого элемента.

Реализации

Примеры

В следующем примере используется 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

Комментарии

Наиболее распространенным сценарием использования этого API является реализация события "оболочки" среды CLR, связанного с пользовательским перенаправленным событием, в частности при реализации логики удаления обработчиков на уровне СРЕДЫ CLR. В примере, следующем за этим разделом примечаний, показан этот сценарий.

Вызов этого метода не оказывает влияния, если обработчики не зарегистрированы с помощью условий, соответствующих входным параметрам вызова метода.

Если несколько обработчиков подключены, соответствующие условиям, удаляется только первый обработчик в хранилище обработчиков событий. Это поведение согласуется с поведением -= оператора CLR.

Ни не routedEvent handler может быть null. Попытка указать любое значение, как null это приведет к возникновению исключения.

Этот метод игнорирует handledEventsToo сведения о параметрах, которые предоставляются при первом добавлении обработчика с подписью AddHandler(RoutedEvent, Delegate, Boolean) , которая обеспечивает обработку уже обработанных событий. Удаляется любой тип обработчика.

Применяется к

См. также раздел