Share via


Mouse.MouseDown 添付イベント

定義

任意のマウス ボタンが押されると発生します。

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

注釈

どのマウス ボタンが押されたかを確認するには、 ハンドラーに渡された 内の MouseButtonEventArgs プロパティをチェックChangedButtonします。

これは添付イベントです。 WPF は、添付イベントをルーティング イベントとして実装します。 アタッチされたイベントは、基本的には、そのイベントを定義していないオブジェクトで処理できるイベントを参照するための XAML 言語の概念です。WPF は、イベントがルートを走査できるようにすることで拡張されます。 添付イベントには、コード内に直接処理構文がありません。コード内のルーティング イベントのハンドラーをアタッチするには、指定された Add*Handler メソッドを使用します。 詳細については、「 添付イベントの概要」を参照してください。

Windows Presentation Foundation (WPF) フレームワークは、 と ContentElementMouseLeftButtonDownMouseRightButtonDownの 2 つの異なる共通言語ランタイム (CLR) イベントとして表示することで、この添付イベントを基にUIElement構築されています。 これらの実装では、基になる MouseDown イベントを処理し、イベントの引数を読み取って、マウスの左ボタンと右ボタンが関係しているかどうかを判断します。 3 ボタン マウスの場合、中央ボタンに対するフレームワーク レベルのイベントサポートはありません。 イベントをMouseDown使用し、イベント引数の状態をMiddleButtonチェックする必要があります。

重要

コントロールに似た動作を持つ派生 ContentElement クラス (例: ) には、 Hyperlinkマウス ボタン イベントに固有のクラス処理が含まれる場合があります。 マウスの左ボタンダウン イベントは、コントロールでクラス処理を行う可能性が最も高いイベントです。 クラス処理では、多くの場合、基になる Mouse クラス イベントが処理対象としてマークされます。 イベントが処理済みとしてマークされると、その要素にアタッチされている他のインスタンス ハンドラーは、通常は発生しません。 UI ツリーのルートに向かってバブル方向の要素にアタッチされている他のクラスまたはインスタンス ハンドラーも、通常は発生しません。

上記の重要なメモに記載されている問題を解決し、次のいずれかのソリューションを使用して、クラス処理を持つ派生クラスでマウスの左ボタンダウン イベントのイベントを受け取 MouseDown ることができます。

  • コントロールによって処理済みとしてマークされていない イベントのハンドラー PreviewMouseDown をアタッチします。 これはプレビュー イベントであるため、ルートはルートから開始され、コントロールにトンネルダウンされます。

  • ルーティング イベント データで既に処理済みとしてマークされている場合でも、ハンドラーがイベントをリッスンできるようにするシグネチャ オプションを呼び出 AddHandler して選択することで、プロシージャとしてコントロールにハンドラーを登録します。

マウスに関連するルーティング イベントの場合は、処理方法とタイミングに注意してください。 特定のマウス アクションについて親要素にも通知する必要があるかどうかについて適切な選択を行うのが難しいのは、WPF フレームワークが基になるマウス ルーティング イベントをルートに沿って CLR イベントとして表示するモデルを選択した理由です。 マウス イベントのトンネリングでも同様の問題が発生します。 イベントを処理し、ソースに向かってそれ以上の子によって処理されないようにする必要があります。また、合成部分がマウスの動作を期待する可能性があるコントロールの合成にどのような影響がありますか?

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

識別子フィールド MouseDownEvent
ルーティング戦略 バブル
代理人 MouseButtonEventHandler

適用対象