次の方法で共有


UIElement.OnMouseDown(MouseButtonEventArgs) メソッド

定義

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

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

パラメーター

e
MouseButtonEventArgs

イベント データを含む MouseButtonEventArgs。 このイベント データは、押されたマウス ボタンと処理された状態に関する詳細を報告します。

注釈

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

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

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

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

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

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

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

適用対象

こちらもご覧ください