UIElement.RemoveHandler(RoutedEvent, Delegate) メソッド


指定したルーティング イベント ハンドラーをこの要素から削除します。Removes the specified routed event handler from this element.

 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



ハンドラーがアタッチされているルーティング イベントの識別子。The identifier of the routed event for which the handler is attached.


この要素のイベント ハンドラー コレクションから削除する特定のハンドラー実装。The specific handler implementation to remove from the event handler collection on this element.


次の例では、イベントラッパー定義の一部として RemoveHandler を使用します。The following example uses RemoveHandler as part of an event wrapper definition.

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)
    End RaiseEvent
End Event


この API を使用する最も一般的なシナリオは、カスタムルーティングイベントに関連付けられた 共通言語ランタイム (CLR)common language runtime (CLR) "ラッパー" イベントを実装する場合です。具体的には、CLRCLR レベルでハンドラーの "削除" ロジックを実装する場合です。The most common scenario for using this API is when you implement the 共通言語ランタイム (CLR)common language runtime (CLR) "wrapper" event that is associated with a custom routed event, specifically when you implement the "remove" logic for handlers at the CLRCLR level. この例では、このシナリオについて説明します。The example that follows this remarks section illustrates this scenario.

メソッド呼び出しの入力パラメーターと一致する条件に登録されたハンドラーがない場合、このメソッドを呼び出すことはできません。Calling this method has no effect if there were no handlers registered with criteria that matches the input parameters for the method call.

条件に一致する複数のハンドラーがアタッチされている場合は、イベントハンドラーストア内の最初のハンドラーだけが削除されます。If more than one handler is attached that matched the criteria, only the first handler in the event handler store is removed. この動作は、-= 演算子の CLRCLR の動作と一致します。This behavior is consistent with CLRCLR behavior of the -= operator.

routedEventhandlernullない可能性があります。Neither routedEvent nor handler may be null. いずれかの値を null として指定しようとすると、例外が発生します。Attempting to provide either value as null will raise an exception.

このメソッドは handledEventsToo パラメーター情報を無視します。これは、既に処理されたイベントの処理を可能にする AddHandler(RoutedEvent, Delegate, Boolean) シグネチャを使用してハンドラーが最初に追加された場合に提供されます。This method ignores the handledEventsToo parameter information, which is provided if the handler was first added with the AddHandler(RoutedEvent, Delegate, Boolean) signature that enables handling of already-handled events. どちらの種類のハンドラーも削除されます。Either type of handler is removed.