次の方法で共有


ContentElement.OnPreviewMouseDown(MouseButtonEventArgs) メソッド

定義

ハンドルされない PreviewMouseDown アタッチされたルーティング イベントが、このクラスから派生したルート内の要素に到達したときに呼び出されます。 このイベントのクラス処理を追加するには、このメソッドを実装します。

protected public:
 virtual void OnPreviewMouseDown(System::Windows::Input::MouseButtonEventArgs ^ e);
protected internal 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 Friend Overridable Sub OnPreviewMouseDown (e As MouseButtonEventArgs)

パラメーター

e
MouseButtonEventArgs

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

注釈

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

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

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

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

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

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

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

適用対象

こちらもご覧ください