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 最常見的案例是當您實作 Common Language Runtime (CLR) 與自訂路由事件相關聯的「包裝函式」事件時,特別是當您實作 CLR 層級處理常式的「移除」邏輯時。 本備註一節後面的範例說明此案例。

如果沒有使用符合方法呼叫之輸入參數的準則註冊處理常式,則呼叫這個方法沒有任何作用。

如果附加多個符合準則的處理常式,則只會移除事件處理常式存放區中的第一個處理常式。 此行為與運算子的 -= CLR 行為一致。

routedEvent也不 handler 可以是 null 。 嘗試提供任一值,因為 null 會引發例外狀況。

這個方法會 handledEventsToo 忽略參數資訊,如果處理常式第一次新增了 AddHandler(RoutedEvent, Delegate, Boolean) 簽章,即可處理已處理的事件。 已移除任一類型的處理常式。

適用於

另請參閱