Windows フォームにおけるマウス イベント
マウス入力を処理する場合、通常はマウスのポインターの位置とマウス ボタンの状態を確認しようとします。 このトピックでは、マウスのイベントからこの情報を取得する方法について詳しく説明し、Windows フォーム コントロールでマウス クリック イベントが発生する順序について説明します。 すべてのマウス イベントのリストと説明は、「Windows フォームにおけるマウス入力のしくみ」を参照してください。 また、「イベント ハンドラーの概要 (Windows フォーム)」および「イベントの概要 (Windows フォーム)」も参照してください。
マウスの情報
MouseEventArgs は、マウス ボタンのクリック、およびマウスの動きの追跡に関連するマウス イベントのハンドラーに送信します。 MouseEventArgs は、マウスのボタンが押された、およびマウスのホイールがスクロールされたといった、クライアント座標のマウス ポインターの場所を含む、マウスの現在の状態に関する情報を提供します。 マウス ポインターがコントロールの境界内に入った、または境界から出たときの通知など、いくつかのマウスイベントは、それ以上の情報はなしで EventArgs をイベント ハンドラーに送信します。
マウス ボタン、または、マウス ポインターの位置の現在の状態を確認して、マウス イベントの処理を回避する場合は、Control クラスの MouseButtons プロパティと MousePosition プロパティも使用できます。 MouseButtons は現在押されているマウス ボタンに関する情報を返します。 MousePosition はマウス ポインターの画面の座標を返しますが、Position によって返される値と同じです。
画面の座標とクライアント座標の間の変換
マウスの位置情報は、クライアント座標の場合と画面の座標の場合があるため、ポインターの座標システムの変換が必要になることがあります。 これは、Control クラスで利用できる PointToClient メソッドと PointToScreen メソッドを使用して簡単に実行できます。
標準のクリック イベントの動作
マウスのクリック イベントを適切な順序で処理する場合は、Windows フォーム コントロールでクリック イベントが発生した順序を知る必要があります。 Windows フォームのコントロールは、すべて、(どちらのマウス ボタンかは関係なく) マウス ボタンを押したときと離したときに同じ順序でクリック イベントを発生させますが、各コントロールについて、次のリストに記載する例外があります。 マウス ボタンのシングル クリックに対して発生したイベントの順序を次に示します。
MouseDown イベント。
Click イベント。
MouseClick イベント。
MouseUp イベント。
マウス ボタンのダブル クリックに対して発生したイベントの順序を次に示します。
MouseDown イベント。
Click イベント。
MouseClick イベント。
MouseUp イベント。
MouseDown イベント。
DoubleClick イベント。 (これは、対象のコントロールで StandardDoubleClick スタイルのビットが
true
に設定されているかどうかに応じて異なる場合があります。ControlStyles のビットの設定方法の詳細については、SetStyle メソッドを参照してください。)MouseDoubleClick イベント。
MouseUp イベント。
マウス クリック イベントの順序を示すコード例については、「方法: Windows フォーム コントロールでユーザー入力イベントを処理する」を参照してください。
個別のコントロール
次のコントロールは、標準のマウス クリック イベントの動作に準拠していません。
-
注意
ComboBox コントロールについて、ユーザーが編集フィールド、ボタン、またはリスト内の項目をクリックすると、後述するイベントの動作が発生します。
左クリック : Click、MouseClick
右クリック: クリック イベントは発生しません
左ダブルクリック : Click、MouseClick、Click、MouseClick
右ダブルクリック: クリック イベントは発生しません
TextBox、RichTextBox、ListBox、MaskedTextBox および CheckedListBox の各コントロール
注意
ユーザーがこれらのコントロール内で任意の場所をクリックすると、後述するイベントの動作が発生します。
左クリック : Click、MouseClick
右クリック: クリック イベントは発生しません
左ダブルクリック : Click、MouseClick、DoubleClick、MouseDoubleClick
右ダブルクリック: クリック イベントは発生しません
ListView コントロール
注意
ユーザーが ListView コントロールの項目をクリックした場合のみ、後述するイベントの動作が発生します。 コントロールのその他の場所をクリックした場合、イベントは発生しません。 後述するイベントに加えて、BeforeLabelEdit と AfterLabelEdit のイベントがあり、ListView コントロールによる検証を使用する場合のためにまとめておきます。
左クリック : Click、MouseClick
右クリック : Click、MouseClick
左ダブルクリック : Click、MouseClick、DoubleClick、MouseDoubleClick
右ダブルクリック : Click、MouseClick、DoubleClick、MouseDoubleClick
TreeView コントロール
注意
ユーザーが項目自体をクリックするか、TreeView コントロールの項目の右側をクリックした場合にのみ、後述するイベントの動作が発生します。 コントロールのその他の場所をクリックした場合、イベントは発生しません。 後述するイベントに加えて、BeforeCheck、BeforeSelect、BeforeLabelEdit、AfterSelect、AfterCheck、および AfterLabelEdit の各イベントがあり、TreeView コントロールを持つ検証を使用する場合のためにまとめておきます。
左クリック : Click、MouseClick
右クリック : Click、MouseClick
左ダブルクリック : Click、MouseClick、DoubleClick、MouseDoubleClick
右ダブルクリック : Click、MouseClick、DoubleClick、MouseDoubleClick
切り替えコントロールの描画の動作
ButtonBase クラスから派生するコントロールなど、切り替えコントロールには、次のようなマウス クリック イベントと組み合わせた独自の描画の動作があります。
ユーザーがマウス ボタンを押します。
押された状態で、コントロールが描画します。
MouseDown イベントが発生します。
ユーザーがマウス ボタンを離します。
離した状態でコントロールが描画します。
Click イベントが発生します。
MouseClick イベントが発生します。
MouseUp イベントが発生します。
注意
マウス ボタンが押されているときにユーザーがポインターを切り替えコントロールの外に移動した (例 : Button コントロールを押しているときにマウスを移動した) 場合、離された状態で切り替えコントロールが描画し、MouseUp イベントのみが発生します。 Click イベントまたは MouseClick イベントは、このような状況では発生しません。
関連項目
.NET Desktop feedback