次の方法で共有


Windows フォームにおけるマウス イベント

マウス入力を処理する場合、通常はマウスのポインターの位置とマウス ボタンの状態を確認しようとします。 このトピックでは、マウスのイベントからこの情報を取得する方法について詳しく説明し、Windows フォーム コントロールでマウス クリック イベントが発生する順序について説明します。 すべてのマウス イベントのリストと説明は、「Windows フォームにおけるマウス入力のしくみ」を参照してください。 また、「イベント ハンドラーの概要 (Windows フォーム)」および「イベントの概要 (Windows フォーム)」も参照してください。

マウスの情報

MouseEventArgs は、マウス ボタンのクリック、およびマウスの動きの追跡に関連するマウス イベントのハンドラーに送信します。 MouseEventArgs は、マウスのボタンが押された、およびマウスのホイールがスクロールされたといった、クライアント座標のマウス ポインターの場所を含む、マウスの現在の状態に関する情報を提供します。 マウス ポインターがコントロールの境界内に入った、または境界から出たときの通知など、いくつかのマウスイベントは、それ以上の情報はなしで EventArgs をイベント ハンドラーに送信します。

マウス ボタン、または、マウス ポインターの位置の現在の状態を確認して、マウス イベントの処理を回避する場合は、Control クラスの MouseButtons プロパティと MousePosition プロパティも使用できます。 MouseButtons は現在押されているマウス ボタンに関する情報を返します。 MousePosition はマウス ポインターの画面の座標を返しますが、Position によって返される値と同じです。

画面の座標とクライアント座標の間の変換

マウスの位置情報は、クライアント座標の場合と画面の座標の場合があるため、ポインターの座標システムの変換が必要になることがあります。 これは、Control クラスで利用できる PointToClient メソッドと PointToScreen メソッドを使用して簡単に実行できます。

標準のクリック イベントの動作

マウスのクリック イベントを適切な順序で処理する場合は、Windows フォーム コントロールでクリック イベントが発生した順序を知る必要があります。 Windows フォームのコントロールは、すべて、(どちらのマウス ボタンかは関係なく) マウス ボタンを押したときと離したときに同じ順序でクリック イベントを発生させますが、各コントロールについて、次のリストに記載する例外があります。 マウス ボタンのシングル クリックに対して発生したイベントの順序を次に示します。

  1. MouseDown イベント。

  2. Click イベント。

  3. MouseClick イベント。

  4. MouseUp イベント。

マウス ボタンのダブル クリックに対して発生したイベントの順序を次に示します。

  1. MouseDown イベント。

  2. Click イベント。

  3. MouseClick イベント。

  4. MouseUp イベント。

  5. MouseDown イベント。

  6. DoubleClick イベント。 (これは、対象のコントロールで StandardDoubleClick スタイルのビットが true に設定されているかどうかに応じて異なる場合があります。ControlStyles のビットの設定方法の詳細については、SetStyle メソッドを参照してください。)

  7. MouseDoubleClick イベント。

  8. MouseUp イベント。

マウス クリック イベントの順序を示すコード例については、「方法: Windows フォーム コントロールでユーザー入力イベントを処理する」を参照してください。

個別のコントロール

次のコントロールは、標準のマウス クリック イベントの動作に準拠していません。

切り替えコントロールの描画の動作

ButtonBase クラスから派生するコントロールなど、切り替えコントロールには、次のようなマウス クリック イベントと組み合わせた独自の描画の動作があります。

  1. ユーザーがマウス ボタンを押します。

  2. 押された状態で、コントロールが描画します。

  3. MouseDown イベントが発生します。

  4. ユーザーがマウス ボタンを離します。

  5. 離した状態でコントロールが描画します。

  6. Click イベントが発生します。

  7. MouseClick イベントが発生します。

  8. MouseUp イベントが発生します。

    注意

    マウス ボタンが押されているときにユーザーがポインターを切り替えコントロールの外に移動した (例 : Button コントロールを押しているときにマウスを移動した) 場合、離された状態で切り替えコントロールが描画し、MouseUp イベントのみが発生します。 Click イベントまたは MouseClick イベントは、このような状況では発生しません。

関連項目