マウス ポインターを管理する (Windows フォーム .NET)

マウス ポインター (カーソルと呼ばれることもあります) は、マウスで行われたユーザー入力に対し、画面上のフォーカス ポイントを指定するビットマップです。 このトピックでは、Windows フォームにおけるマウス ポインターの概要および、マウス ポインターを変更および制御する方法について説明します。

マウス ポインターにアクセスする

マウス ポインターは Cursor クラスによって表され、各 Control には、そのコントロールのポインターを指定する Control.Cursor プロパティがあります。 Cursor クラスには、PositionHotSpot プロパティなどのポインターを表すプロパティや、ShowHideDrawStretched メソッドなどのポインターの外観を変更するメソッドがあります。

次の例では、カーソルがボタン上にあると、カーソルが非表示になります。

private void button1_MouseEnter(object sender, EventArgs e) =>
    Cursor.Hide();

private void button1_MouseLeave(object sender, EventArgs e) =>
    Cursor.Show();
Private Sub Button1_MouseEnter(sender As Object, e As EventArgs) Handles Button1.MouseEnter
    Cursor.Hide()
End Sub

Private Sub Button1_MouseLeave(sender As Object, e As EventArgs) Handles Button1.MouseLeave
    Cursor.Show()
End Sub

マウス ポインターを制御する

マウス ポインターを使用できる領域を制限したり、マウスの位置を変更したい場合があります。 CursorPosition プロパティを使用すると、マウスの現在の位置を取得または設定できます。 また、Clip プロパティを設定して、マウス ポインターを使用できる領域を制限することができます。 クリップ領域は、既定で画面全体です。

次の例では、クリック時にマウス ポインターが 2 つのボタン間に配置されます。

private void button1_Click(object sender, EventArgs e) =>
    Cursor.Position = PointToScreen(button2.Location);

private void button2_Click(object sender, EventArgs e) =>
    Cursor.Position = PointToScreen(button1.Location);
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    PointToScreen(Button2.Location)
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    PointToScreen(Button1.Location)
End Sub

マウス ポインターを変更する

ユーザーにフィードバックを提供する重要な方法として、マウス ポインターを変更する方法があります。 たとえば、MouseEnter および MouseLeave イベントのハンドラーでマウス ポインターを変更し、計算が行われていることをユーザーに通知して、コントロールでのユーザー操作を制限できます。 アプリケーションでドラッグアンドドロップ操作が行われている場合などのシステム イベントのために、マウス ポインターが変わることもあります。

マウス ポインターを変更する第一の方法は、コントロールの Control.Cursor または DefaultCursor プロパティを新しい Cursor に設定することです。 マウス ポインターの変更例については、Cursor クラスのコード例を参照してください。 Cursors クラスでは、これ以外に手のようなポインターなど、さまざまな種類のポインターに対する Cursor オブジェクトのセットを公開しています。

次の例では、ボタンのマウス ポインターのカーソルが手の形に変更されます。

button2.Cursor = System.Windows.Forms.Cursors.Hand;
Button2.Cursor = System.Windows.Forms.Cursors.Hand

マウス ポインターがコントロール上にあるときに常に砂時計のような待機ポインターを表示するには、Control クラスの UseWaitCursor プロパティを使用します。

関連項目