マウス イベントの使用 (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 フォーム コントロールでクリック イベントが同じ順序で発生します。ただし、個々のコントロールについては、次の一覧に記載されている場合を除きます。 次の一覧は、マウス ボタンを 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 コントロール内の項目の右側をクリックした場合にのみ発生します。 コントロールの他の場所でクリックしてもイベントは発生しません。 後で説明するイベントに加えて、TreeView コントロールで検証を使用する場合は、BeforeCheck、BeforeSelect、BeforeLabelEdit、AfterSelect、AfterCheck、および AfterLabelEdit イベントがあります。
- 左クリック:Click、MouseClick
- 右クリック: Click, MouseClick
- 左ダブルクリック: Click, MouseClick;DoubleClick、MouseDoubleClick
- 右をダブルクリックします: Click, MouseClick;DoubleClick、MouseDoubleClick
トグル コントロールの描画動作
トグル コントロール (ButtonBase クラスから派生したコントロールなど) には、マウス クリック イベントと組み合わせて次のような独特の描画動作があります。
ユーザーがマウス ボタンを押します。
コントロールは押下状態で描画されます。
MouseDownイベントが発生します。
ユーザーがマウス ボタンを離します。
コントロールは浮き上がった状態で描画されます。
Click イベントが発生します。
MouseClick イベントが発生します。
MouseUp イベントが発生します。
手記
ユーザーがマウス ボタンを押している間にトグル コントロールの外にポインターを移動すると (押されている間にマウスを Button コントロールから離すなど)、トグル コントロールは上げられた状態で描画され、MouseUp イベントのみが発生します。 この状況では、Click または MouseClick イベントは発生しません。
関連項目
.NET Desktop feedback