EventManager.RegisterClassHandler 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
註冊特殊路由事件的類別處理常式。
多載
RegisterClassHandler(Type, RoutedEvent, Delegate) |
註冊特殊路由事件的類別處理常式。 |
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
使用處理事件資料已標示為已處理之事件的選項,註冊特定路由事件的類別處理常式。 |
RegisterClassHandler(Type, RoutedEvent, Delegate)
註冊特殊路由事件的類別處理常式。
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate)
參數
- classType
- Type
正要宣告類別處理之類別的型別。
- routedEvent
- RoutedEvent
要處理之事件的路由事件識別項。
- handler
- Delegate
對類別處理常式實作的參考。
範例
下列範例會新增 的 處理常式, PreviewMouseRightButtonDownEvent 呼叫 RegisterClassHandler 。
static MyEditContainer()
{
EventManager.RegisterClassHandler(typeof(MyEditContainer), PreviewMouseRightButtonDownEvent, new RoutedEventHandler(LocalOnMouseRightButtonDown));
}
internal static void LocalOnMouseRightButtonDown(object sender, RoutedEventArgs e)
{
MessageBox.Show("this is invoked before the On* class handler on UIElement");
//e.Handled = true; //uncommenting this would cause ONLY the subclass' class handler to respond
}
Shared Sub New()
EventManager.RegisterClassHandler(GetType(MyEditContainer), PreviewMouseRightButtonDownEvent, New RoutedEventHandler(AddressOf LocalOnMouseRightButtonDown))
End Sub
Friend Shared Sub LocalOnMouseRightButtonDown(ByVal sender As Object, ByVal e As RoutedEventArgs)
MessageBox.Show("this is invoked before the On* class handler on UIElement")
'e.Handled = True //uncommenting this would cause ONLY the subclass' class handler to respond
End Sub
備註
類別處理是路由事件可用的功能,包括使用路由事件支援實作的附加事件。 類別處理常式就像是類別所有實例存在的靜態處理常式。 因為處理常式是靜態的,所以您無法使用類別處理常式直接變更實例屬性,但您可以透過 sender
參數和/或事件資料來存取實例。
類別處理常式會在實例處理常式之前叫用。 您可以實作類別處理常式,其行為會將事件標示為已處理。 因此,除非實例處理常式特別註冊已處理的事件,否則不會叫用類別處理事件的實例處理常式。
許多 WPF 基底專案事件都提供類別處理虛擬方法。 藉由在繼承基類的類別中覆寫這些方法,您可以實作類別處理,而不需在靜態建構函式中呼叫 RegisterClassHandler 。 這些類別處理方法通常存在於輸入事件中,而且名稱開頭為 「On」,並以所處理之事件的名稱結尾。
如需類別處理的詳細資訊,請參閱 將路由事件標示為已處理,以及類別處理。
使用此簽章時,類別處理常式會註冊為只在回應未處理的事件時叫用。 您也可以註冊類別處理常式以叫用,即使事件引數已標示為已處理,也可以使用 RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 簽章,並將 handledEventsToo
設定為 true
。
適用於
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
使用處理事件資料已標示為已處理之事件的選項,註冊特定路由事件的類別處理常式。
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate * bool -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)
參數
- classType
- Type
正要宣告類別處理之類別的型別。
- routedEvent
- RoutedEvent
要處理之事件的路由事件識別項。
- handler
- Delegate
對類別處理常式實作的參考。
- handledEventsToo
- Boolean
true
表示即使路由事件的引數已標示為已處理,也要叫用這個類別處理常式,false
則表示保留預設行為,即不在任何標示為已處理的事件上叫用處理常式。
備註
類別處理是路由事件可用的功能,包括使用路由事件支援實作的附加事件。 類別處理常式就像是類別所有實例存在的靜態處理常式。 因為處理常式是靜態的,所以您無法使用類別處理常式直接變更實例屬性,但您可以透過 sender
參數和/或事件資料來存取實例。
類別處理常式會在實例處理常式之前叫用。 您可以實作類別處理常式,其行為會將事件標示為已處理。 因此,除非實例處理常式特別註冊已處理的事件,否則不會叫用類別處理事件的實例處理常式。
許多 WPF 基底專案事件都提供類別處理虛擬方法。 藉由在繼承基類的類別中覆寫這些方法,您可以實作類別處理,而不需在靜態建構函式中呼叫 RegisterClassHandler 。 這些類別處理方法通常存在於輸入事件中,而且名稱開頭為 「On」,並以所處理之事件的名稱結尾。
如需類別處理的詳細資訊,請參閱 將路由事件標示為已處理,以及類別處理。
使用此簽章,類別處理常式可以藉由將 設定為 handledEventsToo
true
,註冊在已處理的事件時叫用。 一般而言,只有在您嘗試解決的已知處理問題時,才應該這麼做,例如滑鼠或鍵盤事件的輸入系統處理。