ContentElement.OnMouseDown(MouseButtonEventArgs) メソッド

定義

アタッチされた未処理の MouseDown イベントが、そのルート上で、このクラスから派生した要素に到達すると呼び出されます。Invoked when an unhandled MouseDown attached event reaches an element in its route that is derived from this class. このイベントに対するクラス処理を追加するには、このメソッドを実装します。Implement this method to add class handling for this event.

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

パラメーター

e
MouseButtonEventArgs

イベント データを格納している MouseButtonEventArgsThe MouseButtonEventArgs that contains the event data. このイベント データは、押されたマウス ボタンおよび処理済み状態に関する詳細を報告します。This event data reports details about the mouse button that was pressed and the handled state.

注釈

マウスボタンの操作も、専用の入力マネージャーによって処理されます。Mouse button actions are also handled by a dedicated input manager. 入力バインドやコマンドバインドなど、マウスボタンの操作に依存するその他のプログラミング機能では、一般的なマウスボタン操作として公開される前に、アクションのハンドラーが呼び出されることがあります。Other programming features that rely on mouse button actions, such as input and command bindings, might invoke handlers for the action before it is exposed as a general mouse button action. これらの入力システム機能が Mouse.MouseDown イベントを処理済みとしてマークした場合、OnMouseDown は呼び出されません。If these input system features mark the Mouse.MouseDown event as handled, OnMouseDown is not invoked.

このクラスハンドラーを使用してイベントを処理済みとしてマークすると、MouseLeftButtonDownMouseRightButtonDownに影響する可能性があります。If you use this class handler to mark the event as handled, you potentially impact the following events: MouseLeftButtonDown and MouseRightButtonDown. これらのイベントのいずれかは、Mouse.MouseDown を受信したときに、受信側の要素で発生する可能性があります。Either of these events may be raised on the receiving element when Mouse.MouseDown is received.

このイベントをクラス処理で処理済みとしてマークした場合、subevents は依然として発生します。ただし、処理された状態はイベントデータに渡されます。If you mark this event as handled in class handling, subevents are still raised; however, they pass the handled state in the event data. イベントがクラス処理で処理される場合、ハンドラーをアタッチするために handledEventsToo true で明示的に AddHandler(RoutedEvent, Delegate, Boolean) を使用しない限り、subevents のインスタンスハンドラーは呼び出されません。If the event is handled in class handling, instance handlers for the subevents are not invoked unless you explicitly use AddHandler(RoutedEvent, Delegate, Boolean) with handledEventsToo true in order to attach handlers. クラスハンドラーは、handledEventsToo trueRegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) シグネチャに登録されていない限り、呼び出されません。Class handlers also are not invoked unless those class handlers were registered with the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature with handledEventsToo true. OnMouseDownを処理することで、すべての潜在的なマウスボタンのダウンアクションをクラスの処理に反映させることができます。By handling OnMouseDown, you are implying that your class handling accounted for all possible mouse button down actions. この動作は望ましくない可能性があります。このため、この仮想メソッドを使用してイベントを処理済みとしてマークする場合は注意が必要です。This behavior might be unwanted; therefore, use caution when you use this virtual method to mark events as handled.

ボタン固有の各ダイレクトイベントには、virtual On* メソッドもあります。これらのボタン固有のクラスハンドラーをオーバーライドする方が適しているかどうかを検討してください。Each of the button-specific direct events also has a virtual On* method; consider whether overriding these button-specific class handlers might be more appropriate.

このメソッドには既定の実装がありません。This method has no default implementation. 継承の中間クラスはこのメソッドを実装する可能性があるため、実装で基本実装を呼び出すことをお勧めします。Because an intermediate class in the inheritance might implement this method, we recommend that you call the base implementation in your implementation.

このメソッドの目的は、* メソッドの 共通言語ランタイム (CLR)common language runtime (CLR) イベントパターンに似ています。このメソッドは、インスタンスハンドラーではなくクラスハンドラーを確立することによって、派生クラスから一致するイベントを処理する手段を提供します。The purpose of this method is similar to the 共通言語ランタイム (CLR)common language runtime (CLR) event pattern On* methods: this method provides the means to handle the matching event from derived classes by establishing a class handler instead of an instance handler. この場合、一致イベントはルーティングイベントです。In this case the matching event is a routed event. ルーティングイベントは子要素によって発生する可能性がありますが、必ずしもハンドラーを呼び出す要素ではないため、On* メソッドの実装パターンはルーティングイベントによって異なります。The implementation pattern of the On* methods is different for routed events because a routed event can be raised by a child element, which is not necessarily the element that will invoke handlers. そのため、実装では、イベントデータのソースプロパティを調べる必要があります。Therefore, your implementation needs to examine the source properties of the event data. ほとんどの場合、イベントを reraise しないようにしてください。It should not try to reraise the event in most cases.

このメソッドをオーバーライドするか、RegisterClassHandlerにクラスハンドラーを登録することによって、ContentElement の派生クラスは、イベントがイベントルートに沿って受信されたときにプライベートクラスハンドラーメソッドを呼び出すことができます。Either by overriding this method or by registering class handlers with RegisterClassHandler, derived classes of ContentElement can call private class handler methods when the event is received along the event route. クラス処理が適切なシナリオの1つは、イベントデータを操作し、ルーティングイベントを処理済みとしてマークすることです。One scenario where class handling is appropriate is to manipulate the event data and mark the routed event as handled.

適用対象

こちらもご覧ください