マウスの使用の概要 (Windows フォーム .NET)
マウス入力の受信と処理は、すべての Windows アプリケーションの重要な部分です。 マウス イベントを処理してアプリケーションでアクションを実行したり、マウスの位置情報を使用してヒット テストやその他のアクションを実行したりできます。 また、アプリケーションのコントロールがマウス入力を処理する方法を変更することもできます。 この記事では、これらのマウス イベントについて詳しく説明し、マウスのシステム設定を取得および変更する方法について説明します。
Windows フォームでは、ユーザー入力は Windows メッセージの形式でアプリケーションに送信されます。 一連のオーバーライド可能なメソッドは、アプリケーション、フォーム、および制御レベルでこれらのメッセージを処理します。 これらのメソッドは、マウス メッセージを受信すると、マウス入力に関する情報を取得するために処理できるイベントを発生させます。 多くの場合、Windows フォーム アプリケーションでは、これらのイベントを処理するだけで、すべてのユーザー入力を処理できます。 その他の場合、アプリケーションは、アプリケーション、フォーム、またはコントロールによって受信される前に、メッセージを処理して特定のメッセージをインターセプトするメソッドの 1 つをオーバーライドすることがあります。
マウス イベント
すべての Windows フォーム コントロールは、マウスとキーボードの入力に関連する一連のイベントを継承します。 たとえば、コントロールは MouseClick イベントを処理して、マウス クリックの位置を決定できます。 マウス イベントの詳細については、「マウス イベントの使用
マウスの位置とヒット テスト
ユーザーがマウスを移動すると、オペレーティング システムはマウス ポインターを移動します。 マウス ポインターにはホット スポットと呼ばれる 1 つのピクセルが含まれており、オペレーティング システムはポインターの位置を追跡して認識します。 ユーザーがマウスを移動するか、マウス ボタンを押すと、HotSpot を含む Control によって、適切なマウス イベントが発生します。
マウス イベントを処理する場合、または Cursor クラスの Position プロパティを使用して、MouseEventArgs の Location プロパティを使用して、現在のマウス位置を取得できます。 その後、マウスの位置情報を使用してヒット テストを実行し、マウスの位置に基づいてアクションを実行できます。 ヒット テスト機能は、ListView、TreeView、MonthCalendar、DataGridView コントロールなど、Windows フォーム内のいくつかのコントロールに組み込まれています。
たとえば、ヒット テスト MouseHover、適切なマウス イベントと共に使用すると、アプリケーションが特定のアクションを実行するタイミングを判断するのに非常に役立ちます。
マウス入力設定の変更
コントロールから派生し、GetStyle メソッドと SetStyle メソッドを使用して、コントロールがマウス入力を処理する方法を検出および変更できます。 SetStyle メソッドは、ControlStyles 値のビットごとの組み合わせを使用して、コントロールに標準のクリック動作、ダブルクリック動作があるかどうか、またはコントロールが独自のマウス処理を処理するかどうかを決定します。 また、SystemInformation クラスには、マウスの機能を記述し、マウスがオペレーティング システムと対話する方法を指定するプロパティが含まれています。 これらのプロパティの概要を次の表に示します。
財産 | 説明 |
---|---|
DoubleClickSize | ユーザーがオペレーティング システムでダブルクリックを考慮するために 2 回クリックする必要がある領域の寸法をピクセル単位で取得します。 |
DoubleClickTime | マウス アクションがダブルクリックと見なされるまでの最初のクリックと 2 回目のクリックの間に経過できる最大時間 (ミリ秒) を取得します。 |
MouseButtons | マウスのボタンの数を取得します。 |
MouseButtonsSwapped | マウスの左右のボタンの機能がスワップされたかどうかを示す値を取得します。 |
MouseHoverSize | マウス ホバー メッセージが生成される前にマウス ポインターがマウス ホバー時間を維持する必要がある四角形の寸法 (ピクセル単位) を取得します。 |
MouseHoverTime | マウス ポインターがマウス ポインターをホバー四角形内に留めてからマウス ホバー メッセージが生成されるまでの時間 (ミリ秒単位) を取得します。 |
MousePresent | マウスがインストールされているかどうかを示す値を取得します。 |
MouseSpeed | 現在のマウス速度 (1 から 20) を示す値を取得します。 |
MouseWheelPresent | マウス ホイールを持つマウスがインストールされているかどうかを示す値を取得します。 |
MouseWheelScrollDelta | 1 つのマウス ホイールの回転の増分の差分値の量を取得します。 |
MouseWheelScrollLines | マウス ホイールが回転したときにスクロールする行数を取得します。 |
ユーザー入力メッセージを処理するメソッド
フォームとコントロールは、IMessageFilter インターフェイスと、メッセージ キュー内のさまざまなポイントで Windows メッセージを処理する一連のオーバーライド可能なメソッドにアクセスできます。 これらのメソッドはすべて、Windows メッセージの低レベルの詳細をカプセル化する Message パラメーターを持ちます。 これらのメソッドを実装またはオーバーライドしてメッセージを調べ、メッセージを使用するか、メッセージ キュー内の次のコンシューマーに渡すことができます。 次の表に、Windows フォーム内のすべての Windows メッセージを処理するメソッドを示します。
方式 | メモ |
---|---|
PreFilterMessage | このメソッドは、キューに置かれた (ポストされた) Windows メッセージをアプリケーション レベルでインターセプトします。 |
PreProcessMessage | このメソッドは、処理される前に、フォームおよびコントロール レベルで Windows メッセージをインターセプトします。 |
WndProc | このメソッドは、フォームおよびコントロール レベルで Windows メッセージを処理します。 |
DefWndProc | このメソッドは、フォームおよびコントロール レベルで Windows メッセージの既定の処理を実行します。 これにより、ウィンドウの最小限の機能が提供されます。 |
OnNotifyMessage | このメソッドは、処理された後、フォームおよびコントロール レベルでメッセージをインターセプトします。 このメソッドを呼び出すには、EnableNotifyMessage スタイル ビットを設定する必要があります。 |
関連項目
.NET Desktop feedback