UIElement.RemoveHandler(RoutedEvent, Delegate) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從這個項目中移除指定的路由事件處理常式。
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) 簽章,即可處理已處理的事件。 已移除任一類型的處理常式。