Поделиться через


Управление указателями мыши (Windows Forms .NET)

Указатель мыши, который иногда называют курсором, является точечным рисунком, указывающим на экране точку фокуса для ввода данных пользователем с помощью мыши. В этом разделе приводится обзор указателя мыши в Windows Forms и описываются некоторые способы его изменения и управления им.

Важно!

Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.

Доступ к указателю мыши

Указатель мыши представлен классом Cursor, и каждый элемент Control имеет свойство Control.Cursor, которое задает для него указатель. Класс Cursor содержит свойства, описывающие указатель, например свойства Position и HotSpot, а также методы, которые могут изменять внешний вид указателя, например методы Show, Hide и DrawStretched.

В следующем примере курсор скрывается при наведении курсора на кнопку:

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

Управление указателем мыши

Иногда может потребоваться ограничить область, в которой можно использовать указатель мыши, или изменить расположение мыши. Можно получить или задать текущее расположение мыши с помощью свойства Position объекта Cursor. Кроме того, можно ограничить область, в которой можно использовать указатель мыши, задав свойство 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

Изменение указателя мыши

Изменение указателя мыши является важным способом предоставления обратной связи пользователю. Например, указатель мыши можно изменить в обработчиках событий 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.

См. также