ほとんどの Windows フォーム プログラムは、マウス イベントを処理してマウス入力を処理します。 この記事では、マウス イベントの概要について説明します。各イベントを使用するタイミングの詳細や、各イベントに対して提供されるデータについて説明します。 イベント全般の詳細については、「 イベントの概要」を参照してください。
マウス イベント
マウス入力に応答する主な方法は、マウス イベントを処理することです。 次の表は、マウス イベントを示し、発生するタイミングについて説明しています。
マウス イベント | 説明 |
---|---|
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 を送信します。
マウス ボタンの現在の状態またはマウス ポインターの位置を把握し、マウス イベントの処理を回避したい場合は、MouseButtons クラスのMousePositionプロパティとControlプロパティを使用することもできます。 MouseButtons は、現在押されているマウス ボタンに関する情報を返します。 MousePositionはマウス ポインターの画面座標を返し、Positionによって返される値と同じです。
画面座標とクライアント座標間の変換
一部のマウスの位置情報はクライアント座標にあり、一部は画面座標にあるため、ある座標系から別の座標系にポイントを変換することが必要になる場合があります。 これを簡単に行うには、PointToClient クラスで使用できるPointToScreenメソッドとControlメソッドを使用します。
標準クリックイベントの動作
マウス クリック イベントを適切な順序で処理する場合は、Windows フォーム コントロールでクリック イベントが発生する順序を把握する必要があります。 サポートされているマウス ボタンが押されて離されると、すべての Windows フォーム コントロールでクリック イベントが同じ順序で発生します。ただし、個々のコントロールについては、次の一覧に記載されている場合を除きます。 次の一覧は、マウス ボタンを 1 回クリックしたときに発生するイベントの順序を示しています。
- イベント MouseDown します。
- イベント Click します。
- イベント MouseClick します。
- イベント MouseUp します。
マウス ボタンを 2 回クリックしたときに発生するイベントの順序を次に示します。
イベント 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