Имитация событий мыши в Windows Forms не так проста, как имитация событий клавиатуры. В Windows Forms отсутствует вспомогательный класс для перемещения мыши и вызова действий щелчка мышью. Единственным вариантом управления мышью является использование собственных методов Windows. При работе с пользовательским элементом управления или формой можно имитировать событие мыши, но нельзя напрямую управлять мышью.
События
У большинства событий есть соответствующий метод, который их вызывает, с шаблонным именем, начинающимся с On, за которым следует EventName, например OnMouseMove. Этот вариант возможен только в пределах пользовательских элементов управления или форм, так как эти методы защищены и недоступны вне контекста элемента управления или формы. Недостаток использования такого метода, как OnMouseMove, заключается в том, что он не управляет мышью или взаимодействует с элементом управления, а просто вызывает связанное событие. Например, если вы хотите имитировать наведение указателя мыши на элемент в ListBox, OnMouseMove и ListBox не будут визуально реагировать на выделенный элемент под курсором.
Эти защищенные методы можно использовать для имитации событий мыши.
Большинство элементов управления при щелчке мышью выполняют какое-либо действие, например вызов пользовательского кода при нажатии кнопки или изменение состояния флажка после его установки. Поэтому в Windows Forms предусмотрен простой способ запуска действия щелчка мышью. Некоторые элементы управления, такие как ComboBox, не выполняют никаких специальных действий при щелчке мышью, а имитация щелчка не влияет на элемент управления.
В форме с пользовательским элементом управления используйте метод InvokeOnClick для имитации щелчка мышью. Это защищенный метод, который может вызываться только в форме или в производном пользовательском элементе управления.
Например, ниже представлен код установки флажка в button1.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
InvokeOnClick(CheckBox1, EventArgs.Empty)
End Sub
Использование собственных методов Windows
Windows предоставляет методы, которые можно вызывать для имитации движений мыши и щелчков мышью, такие как User32.dll SendInput и User32.dll SetCursorPos. В следующем примере курсор мыши перемещается в центр элемента управления:
C#
[DllImport("user32.dll", EntryPoint = "SetCursorPos")]
[return: MarshalAs(UnmanagedType.Bool)]
privatestaticexternboolSetCursorPos(int x, int y);
privatevoidbutton1_Click(object sender, EventArgs e)
{
Point position = PointToScreen(checkBox1.Location) + new Size(checkBox1.Width / 2, checkBox1.Height / 2);
SetCursorPos(position.X, position.Y);
}
<Runtime.InteropServices.DllImport("USER32.DLL", EntryPoint:="SetCursorPos")>
Public Shared Function SetCursorPos(x As Integer, y As Integer) As Boolean : End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim position As Point = PointToScreen(CheckBox1.Location) + New Size(CheckBox1.Width / 2, CheckBox1.Height / 2)
SetCursorPos(position.X, position.Y)
End Sub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET Desktop feedback
.NET Desktop feedback — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Learn to automate simulated mouse movement, clicks, typing, and key presses in Power Automate. Also, discover how to select and locate images or areas on the screen.
Обзор использования событий мыши для обработки входных данных мыши. Каждое событие может предоставлять связанные данные. В этой статье представлен список событий, связанных с мышью.
Узнайте, как работает ввод с помощью мыши в Windows Forms для .NET. События мыши вызываются формами и элементами управления и представляют собой расположение и состояние кнопки мыши.
Узнайте, как получить расположение мыши на основе событий мыши и понять порядок, в котором события щелчка мыши вызываются для элементов управления Windows Forms.