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
クラス ハンドラー実装への参照。
例
次の例では、呼び出しRegisterClassHandlerのハンドラーをPreviewMouseLeftButtonDown追加します。
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
呼び出すことができます。 通常、これは、マウスまたはキーボード イベントからの入力システムの処理など、回避しようとしている既知の処理の問題がある場合にのみ行う必要があります。