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のハンドラーをPreviewMouseRightButtonDownEvent追加します。
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) を に設定して呼び出すクラス ハンドラーをtrue
handledEventsToo
登録することもできます。
適用対象
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
登録できます。 通常、これは、マウスまたはキーボード イベントからの入力システムの処理など、回避しようとしている既知の処理の問題がある場合にのみ行う必要があります。
適用対象
.NET