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

クラス ハンドラー実装への参照。

次の例では、のハンドラーを追加し、を PreviewMouseLeftButtonDown 呼び出し 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 ます。 通常、この操作は、マウスやキーボードイベントからの入力システム処理など、回避しようとしている既知の処理の問題がある場合にのみ行ってください。

適用対象