マウス イベントの使用 (Windows フォーム .NET)
多くの Windows フォーム プログラムでは、マウス イベントに対処することでマウス入力が処理されます。 この記事では、どのような場合に各イベントを使用するか、また各イベントがどのようなデータを提供するかについての詳細を含め、マウス イベントの概要について説明します。 一般的なイベントの詳細については、「イベントの概要 (Windows フォーム .NET)」を参照してください。
マウス イベント
マウス入力に応答する主な方法は、マウス イベントを処理することです。 次の表は、マウス イベントと、それがいつ発生するかの説明を示しています。
マウス イベント | 説明 |
---|---|
Click | このイベントは、マウス ボタンが離されたとき (通常は MouseUp イベントの前) に発生します。 このイベントのハンドラーは、型 EventArgs の引数を受け取ります。 このイベントは、クリックがいつ発生したかを判断する必要がある場合にのみ処理します。 |
MouseClick | このイベントは、ユーザーがマウスでコントロールをクリックすると発生します。 このイベントのハンドラーは、型 MouseEventArgs の引数を受け取ります。 クリックが発生したときにマウスに関する情報を取得する必要がある場合に、このイベントを処理します。 |
DoubleClick | このイベントは、コントロールがダブルクリックされたときに発生します。 このイベントのハンドラーは、型 EventArgs の引数を受け取ります。 このイベントは、ダブルクリックがいつ発生したかを判断する必要がある場合にのみ処理します。 |
MouseDoubleClick | このイベントは、ユーザーがマウスでコントロールをダブルクリックすると発生します。 このイベントのハンドラーは、型 MouseEventArgs の引数を受け取ります。 ダブルクリックが発生したときにマウスに関する情報を取得する必要がある場合に、このイベントを処理します。 |
MouseDown | このイベントは、マウス ポインターがコントロール上にあるときに、ユーザーがマウス ボタンを押すと発生します。 このイベントのハンドラーは、型 MouseEventArgs の引数を受け取ります。 |
MouseEnter | このイベントは、コントロールの種類に応じて、マウス ポインターがコントロールの境界線またはクライアント領域に入ったときに発生します。 このイベントのハンドラーは、型 EventArgs の引数を受け取ります。 |
MouseHover | このイベントは、マウス ポインターがコントロールの上に置かれたときに発生します。 このイベントのハンドラーは、型 EventArgs の引数を受け取ります。 |
MouseLeave | このイベントは、コントロールの種類に応じて、マウス ポインターがコントロールの境界線またはクライアント領域から離れたときに発生します。 このイベントのハンドラーは、型 EventArgs の引数を受け取ります。 |
MouseMove | このイベントは、マウス ポインターがコントロール上で動かされたときに発生します。 このイベントのハンドラーは、型 MouseEventArgs の引数を受け取ります。 |
MouseUp | このイベントは、マウス ポインターがコントロール上にあり、ユーザーがマウス ボタンを離したときに発生します。 このイベントのハンドラーは、型 MouseEventArgs の引数を受け取ります。 |
MouseWheel | このイベントは、このコントロールの上にフォーカスがある状態でユーザーがマウス ホイールを使用したときに発生します。 このイベントのハンドラーは、型 MouseEventArgs の引数を受け取ります。 MouseEventArgs の Delta プロパティを使用して、マウスのスクロール距離を決定できます。 |
マウスの情報
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 イベント。
個別のコントロール
次のコントロールは、標準のマウス クリック イベントの動作に準拠していません。
-
注意
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