Управление указателями мыши (Windows Forms .NET)
Указатель мыши, который иногда называют курсором, является точечным рисунком, указывающим на экране точку фокуса для ввода данных пользователем с помощью мыши. В этом разделе приводится обзор указателя мыши в Windows Forms и описываются некоторые способы его изменения и управления им.
Доступ к указателю мыши
Указатель мыши представлен классом 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.
См. также
.NET Desktop feedback