Windows フォームにおけるマウス イベント
マウス入力を処理する場合、通常、マウス ポインターの位置とマウス ボタンの状態を確認する必要があります。 ここでは、この情報をマウス イベントから取得する方法について詳しく説明し、Windows フォーム コントロール内でマウス イベントが発生する順序について説明します。 すべてのマウス イベントの一覧と説明については、「Windows フォームにおけるマウス入力のしくみ」を参照してください。 詳細については イベントの概要 (Windows フォーム) および イベント ハンドラの概要 (Windows フォーム) および イベント ハンドラの概要 (Windows フォーム) および イベントの概要 (Windows フォーム) および イベント ハンドラの概要 (Windows フォーム) および イベントの概要 (Windows フォーム) および イベント ハンドラーの概要 (Windows フォーム) および イベントの概要 (Windows フォーム).
マウス情報
MouseEventArgs は、マウス ボタンのクリックおよびマウスの動きの追跡に関連するマウス イベントのハンドラーに送信されます。 MouseEventArgs は、クライアント座標におけるマウス ポインターの位置、どのマウス ボタンが押されているか、およびマウス ホイールがスクロールされたかどうかなどの情報を含む、マウスの現在の状態に関する情報を提供します。 マウス ポインターがコントロールの境界にいつ出入りしたかだけを通知するマウス イベントなど、いくつかのマウス イベントは EventArgs だけを送信し、それ以外の情報は送信しません。
マウス ボタンの現在の状態やマウス ポインターの位置を知る必要があり、マウス イベントの処理を回避する必要がある場合は、Control クラスの MouseButtons プロパティおよび MousePosition プロパティを使用できます。 MouseButtons は、どのマウス ボタンが現在押されているかに関する情報を返します。 MousePosition はマウス ポインターの画面座標を返します。これは、Position が返す値と等価です。
画面座標とクライアント座標間の変換
マウスの位置情報はクライアント座標で表されたり画面座標で表されたりするため、ある座標系から別の座標系への位置の変換が必要になることがあります。 この作業は、Control クラスで使用できる PointToClient メソッドおよび PointToScreen メソッドを使用することによって簡単に行うことができます。
標準のクリック イベント動作
マウス クリック イベントを正しい順序で処理するには、Windows フォーム コントロールにおけるクリック イベントの発生順序を知る必要があります。 すべての Windows フォーム コントロールは、マウス ボタンが押されて離されたときに (マウス ボタンの種類にかかわらず) 同じ順序でクリック イベントを発生させます。ただし、後述する各種コントロールは除きます。 マウス ボタンを 1 回クリックしたときに発生するイベントの順序を次に示します。
MouseDown イベント。
Click イベント。
MouseClick イベント。
MouseUp イベント。
マウス ボタンをダブルクリックしたときに発生するイベントの順序を次に示します。
MouseDown イベント。
Click イベント。
MouseClick イベント。
MouseUp イベント。
MouseDown イベント。
DoubleClick イベント。 このイベントは、当該のコントロールの StandardDoubleClick スタイル ビットが true に設定されているかどうかによって異なる場合があります。 ControlStyles ビットの設定方法の詳細については、SetStyle メソッドに関するトピックを参照してください。
MouseDoubleClick イベント。
MouseUp イベント。
マウス クリック イベントの順序を示すコード例については、「方法 : Windows フォーム コントロールでユーザー入力イベントを処理する」を参照してください。
各種コントロール
標準のマウス クリック イベント動作に準拠しないコントロールを次に示します。
Button、CheckBox、ComboBox、および RadioButton の各コントロール。
注意
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 イベントは発生しません。