次の方法で共有


マウス ポインターの管理

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

マウス ポインターへのアクセス

マウス ポインターは Cursor クラスによって表され、各 Control には、そのコントロールのポインターを指定する Control.Cursor プロパティがあります。 Cursor クラスには、ポインターを記述するプロパティ (Position プロパティや HotSpot プロパティなど) と、ポインターの外観を変更できるメソッド (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

マウス ポインターの制御

場合によっては、マウスの位置を変更したり、マウス ポインターを特定の領域に制限したりすることができます。 Cursor.Position プロパティを使用して、マウスの現在の位置を取得または設定できます。 また、 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

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

こちらも参照ください