EventManager.RegisterClassHandler 方法

定義

註冊特定路由事件的類別處理器。

多載

名稱 Description
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為 來註冊,在處理事件時呼叫。 一般來說,只有當你想解決已知的處理問題時,才應該這麼做,例如滑鼠或鍵盤事件導致輸入系統的處理。

適用於