UIElement.OnPreviewMouseDown(MouseButtonEventArgs) メソッド

定義

未処理の PreviewMouseDown 添付ルーティング イベントが、そのルート上で、このクラスから派生した要素に到達すると呼び出されます。 このイベントに対するクラス処理を追加するには、このメソッドを実装します。

protected:
 virtual void OnPreviewMouseDown(System::Windows::Input::MouseButtonEventArgs ^ e);
protected virtual void OnPreviewMouseDown (System.Windows.Input.MouseButtonEventArgs e);
abstract member OnPreviewMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
override this.OnPreviewMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
Protected Overridable Sub OnPreviewMouseDown (e As MouseButtonEventArgs)

パラメーター

e
MouseButtonEventArgs

イベント データを格納している MouseButtonEventArgs。 このイベント データは、1 つ以上のマウス ボタンが押されたことを報告します。

注釈

マウス ボタンアクションは、専用の入力マネージャーによっても処理されます。 入力バインドやコマンド バインドなど、マウス ボタンアクションに依存するその他のプログラミング機能では、一般的なマウス ボタン アクションとして公開される前に、アクションのハンドラーが呼び出される場合があります。 これらの入力システム機能によってイベントが処理済 Mouse.PreviewMouseDown みとしてマークされている場合、 OnPreviewMouseDown は呼び出されません。

このクラス ハンドラーを使用してイベントを処理済みとしてマークすると、次のイベントに影響する可能性があります: PreviewMouseLeftButtonDownPreviewMouseRightButtonDown 。 これらのイベントは、受信時に受信側要素で Mouse.PreviewMouseDown 発生する可能性があります。

このイベントをクラス処理で処理済みとしてマークした場合でも、サブイベントは引き続き発生します。ただし、イベント データで処理された状態を渡します。 イベントがクラス処理で処理される場合、ハンドラーをアタッチするために を明示的に使用しない限り、サブイベントのインスタンス ハンドラーは AddHandler(RoutedEvent, Delegate, Boolean) handledEventsToo true 呼び出されません。 クラス ハンドラーも、 でシグネチャに登録されていない限り、呼び RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 出されません handledEventsToo true 。 を処理 OnPreviewMouseDown することで、マウス ボタンの下に表示される可能性があるすべてのアクションがクラス処理で考慮されたと見なされます。 この動作は望ましくない可能性があります。そのため、この仮想メソッドを使用してイベントを処理済みとしてマークする場合は注意が必要です。

ボタン固有の各ダイレクト イベントには、仮想 On* メソッドも含されます。これらのボタン固有のクラス ハンドラーをオーバーライドする方が適切かどうかを検討してください。

このメソッドには既定の実装はありません。 継承の中間クラスはこのメソッドを実装する可能性があるから、実装で基本実装を呼び出すのをお勧めします。

このメソッドの目的は、共通言語ランタイム (CLR) イベント パターン On* メソッドに似ています。このメソッドは、インスタンス ハンドラーではなくクラス ハンドラーを確立することで、派生クラスから一致するイベントを処理する手段を提供します。 この場合、一致するイベントはルーティング イベントです。 ルーティング イベントは子要素によって発生する可能性があります。これは、ハンドラーを呼び出す要素とは限らないため、ルーティング イベントでは On* メソッドの実装パターンが異なります。 そのため、実装では、イベント データのソース プロパティを調べる必要があります。 ほとんどの場合、イベントの再レイズを試みる必要があります。

このメソッドをオーバーライドするか、 にクラス ハンドラーを登録することで、 の派生クラスは、イベントがイベント ルートに沿って受信されると、プライベート クラス ハンドラー メソッドを RegisterClassHandler UIElement 呼び出します。 クラス処理が適切なシナリオの 1 つは、イベント データを操作し、ルーティング イベントを処理済みとしてマークすることです。 プレビュー イベント専用のもう 1 つのシナリオは、対応するバブル クラス ハンドラーが呼び出されなく、処理済みとしてマークします。

適用対象

こちらもご覧ください