Mouse.MouseDown 添付イベント


任意のマウス ボタンが押されると発生します。Occurs when any mouse button is depressed.

see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler


どのマウスボタンが押されたかを確認するには、ハンドラーに渡された MouseButtonEventArgsChangedButton プロパティを確認します。To determine which mouse button was depressed, check the ChangedButton property in the MouseButtonEventArgs passed to the handler.

これは添付イベントです。This is an attached event. WPFWPF は、添付イベントをルーティングイベントとして実装します。implements attached events as routed events. 添付イベントは、基本的には、イベントを定義していないオブジェクトで処理できるイベントを参照するための XAMLXAML 言語の概念です。これは、イベントがルートを走査できるようにすることで WPFWPF 拡張されます。Attached events are fundamentally a XAMLXAML language concept for referencing events that can be handled on objects that do not define that event, which WPFWPF expands upon by also enabling the event to traverse a route. アタッチされたイベントには、コードで直接処理構文がありません。コードでルーティングイベントのハンドラーをアタッチするには、指定された Add * Handler メソッドを使用します。Attached events do not have a direct handling syntax in code; to attach handlers for a routed event in code, you use a designated Add*Handler method. 詳細については、「添付イベントの概要」を参照してください。For details, see Attached Events Overview.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) framework は、このアタッチされたイベントに基づいて、UIElementContentElement: MouseLeftButtonDownMouseRightButtonDownに2つの異なる 共通言語ランタイム (CLR)common language runtime (CLR) イベントとして提示します。The Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) framework builds on this attached event by surfacing it as two different 共通言語ランタイム (CLR)common language runtime (CLR) events on UIElement and ContentElement: MouseLeftButtonDown and MouseRightButtonDown. これらの実装は、基になる MouseDown イベントを処理し、イベントの引数を読み取って、マウスの左ボタンまたは右ボタンが関係していたかどうかを判断します。These implementations handle the underlying MouseDown event and read the arguments of the event to determine whether the left or right mouse button was involved. 3つのボタンを使用するマウスでは、[中央] ボタンのフレームワークレベルのイベントはサポートされていません。For a three-button mouse, there is no framework-level event support for the center button. MouseDown イベントを使用して、イベント引数の MiddleButton の状態を確認する必要があります。You should use the MouseDown event and check the MiddleButton state in the event arguments.


コントロールに似た動作を持ついくつかの ContentElement 派生クラス (Hyperlinkなど) には、マウスボタンイベントに固有のクラス処理が含まれる場合があります。A few ContentElement derived classes that have control-like behavior, for example, Hyperlink, might have inherent class handling for mouse button events. マウスの左ボタンダウンイベントは、コントロールでクラス処理を行う最も可能性の高いイベントです。The left mouse button down event is the most likely event to have class handling in a control. クラスの処理では、多くの場合、基になる Mouse クラスのイベントを処理済みとしてマークします。The class handling often marks the underlying Mouse class event as handled. イベントが処理済みとしてマークされると、その要素にアタッチされている他のインスタンスハンドラーは通常は発生しません。Once the event is marked handled, other instance handlers that are attached to that element are not ordinarily raised. UI ツリー内のルートに向かうバブル方向の要素に関連付けられているその他のクラスまたはインスタンスハンドラーも、通常は発生しません。Any other class or instance handlers that are attached to elements in the bubbling direction towards the root in the UI tree are also not ordinarily raised.

前の重要な注意事項で説明されている問題を解決しても、次のいずれかの方法を使用してクラス処理を持つ派生クラスで、マウスの左ボタンダウンイベントの MouseDown イベントを受け取ることができます。You can resolve the issue that is outlined in the preceding Important note and still receive MouseDown events for left mouse button down events on a derived class that has class handling by using either of these solutions:

  • PreviewMouseDown イベントのハンドラーをアタッチします。これは、コントロールによって処理されるようにマークされていません。Attach handlers for the PreviewMouseDown event, which is not marked as handled by the controls. これはプレビューイベントであるため、ルートからルートが開始され、コントロールにトンネリングされることに注意してください。Notice that because this is a preview event, the route starts at the root and tunnels down to the control.

  • AddHandler を呼び出し、ハンドラーがルーティングイベントデータで既に処理済みとしてマークされている場合でもイベントをリッスンできるようにする署名オプションを選択して、コントロール procedurally にハンドラーを登録します。Register a handler on the control procedurally by calling AddHandler and choosing the signature option that enables handlers to listen for events even if they are already marked as handled in the routed event data.

マウスに関連するルーティングイベントの場合は、どのように処理されたかをマークする方法やタイミングに注意してください。For routed events that relate to the mouse, be careful about how or when you mark them handled. 特定のマウス操作について親要素にも通知する必要があるかどうかについて、適切な選択を行うことが難しいのは、WPFWPF framework が、基になるマウスのルーティングイベントをルートに沿って CLRCLR イベントとして表示するモデルを選択した理由です。The difficulty in making the appropriate choices about whether parent elements should also be informed about any given mouse action is in fact why the WPFWPF framework chose the model of having the underlying mouse routed event be surfaced as CLRCLR events along the route. ルーティングのマウスイベントにも同様の問題があります。Similar issues exist with tunneling mouse events. イベントを処理し、ソースに対してそれ以上の子によって処理されないようにする必要があります。また、合成部分にマウスの動作が期待される可能性があるコントロールを合成するにはどうすればよいでしょうか。Should you handle the event and not have it be handled by further children toward the source, and how would that affect compositing a control where the compositing pieces might have expected mouse behaviors?

ルーティングされたイベント情報Routed Event Information

識別子フィールドIdentifier field MouseDownEvent
ルーティング方法Routing strategy バブリングBubbling
DelegateDelegate MouseButtonEventHandler