管理鼠标指针(Windows 窗体 .NET)

鼠标指针(有时被称为光标)是一个位图,通过鼠标在屏幕上为用户指定一个输入焦点。 本主题概述了 Windows 窗体中的鼠标指针,并介绍了一些修改和控制鼠标指针的方法。

重要

面向 .NET 7 和 .NET 6 的桌面指南文档正在撰写中。

访问鼠标指针

鼠标指针由 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 属性来限制可以使用鼠标指针的区域。 默认情况下,剪辑区域是整个屏幕。

在下面的示例中,会在单击两个按钮时将鼠标指针放置在这两个按钮之间:

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

更改鼠标指针

更改鼠标指针是向用户提供反馈的重要方式。 例如,可以在 MouseEnterMouseLeave 事件的处理程序中修改鼠标指针,以告知用户正在进行计算并限制控件中的用户交互。 有时,鼠标指针会因系统事件而发生变化,例如当应用程序涉及拖放操作时。

更改鼠标指针的主要方式是将控件的 Control.CursorDefaultCursor 属性设置为新的 Cursor。 有关更改鼠标指针的示例,请参阅 Cursor 类中的代码示例。 此外,Cursors 类公开了许多不同类型的指针(如手形指针)的一组 Cursor 对象。

下面的示例将按钮的鼠标指针的光标更改为手形形状:

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

若要在鼠标指针位于控件上方时显示等待指针(沙漏状),请使用 Control 类的 UseWaitCursor 属性。

另请参阅