EventManager.RegisterClassHandler 方法

定義

註冊特殊路由事件的類別處理常式。

多載

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」,並以所處理之事件的名稱結尾。

如需類別處理的詳細資訊,請參閱 將路由事件標示為已處理,以及類別處理

使用此簽章,類別處理常式可以藉由將 設定為 handledEventsTootrue ,註冊在已處理的事件時叫用。 一般而言,只有在您嘗試解決的已知處理問題時,才應該這麼做,例如滑鼠或鍵盤事件的輸入系統處理。

適用於