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


Общие сведения об использовании мыши (Windows Forms .NET)

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

Важно!

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

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

События мыши

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

Расположение мыши и тестирование

Когда пользователь двигает мышь, операционная система перемещает указатель мыши. Указатель мыши содержит один пиксель, называемый активной точкой указателя мыши, которую операционная система отслеживает и распознает как расположение указателя. Когда пользователь перемещает мышь или нажимает кнопку мыши, Control, который содержит HotSpot, вызывает соответствующее событие мыши.

Текущее расположение мыши можно получить с помощью свойства Location элемента MouseEventArgs при обработке события мыши или с помощью свойства Position класса Cursor. Затем можно использовать сведения о расположении мыши для тестирования, а затем выполнить действие в зависимости от расположения мыши. Функция тестирования встроена в несколько элементов управления в Windows Forms, таких как ListView, TreeView, MonthCalendar и элементы управления DataGridView.

При использовании с соответствующим событием мыши, например MouseHover, тестирование очень полезно для определения того, когда приложение должно выполнить конкретное действие.

Изменение параметров ввода с помощью мыши

Вы можете определить и изменить способ обработки элементами управления ввода с помощью мыши с помощью производного от элемента управления и использования методов GetStyle и SetStyle. Метод SetStyle принимает побитовое сочетание значений ControlStyles, чтобы определить, будет ли для элемента управления осуществлено стандартное нажатие, двойное нажатие кнопки мыши или элемент управления будет обрабатывать действие мыши самостоятельно. Кроме того, класс SystemInformation содержит свойства, описывающие возможности мыши и определяющие взаимодействие мыши с операционной системой. Эти свойства кратко представлены в следующей таблице.

Свойство Description
DoubleClickSize Возвращает размеры (в пикселях) области, в которой пользователь должен щелкнуть дважды, чтобы операционная система обработала два щелчка как двойной щелчок.
DoubleClickTime Возвращает максимальное число миллисекунд, которое может пройти между первым и вторым щелчком, чтобы действие мыши рассматривалось как двойной щелчок.
MouseButtons Возвращает число кнопок мыши.
MouseButtonsSwapped Возвращает значение, указывающее, могут ли меняться местами функции левой и правой кнопок мыши.
MouseHoverSize Возвращает размеры прямоугольника (в пикселях), в котором должен находиться указатель мыши в течение времени наведения мыши перед тем, как создается сообщение о наведении мыши.
MouseHoverTime Возвращает интервал времени (в миллисекундах), в течение которого указатель мыши должен оставаться в прямоугольнике наведения перед тем, как вызывается сообщение о наведении мыши.
MousePresent Получает значение, указывающее, установлена ли мышь.
MouseSpeed Получает значение, указывающее текущую скорость перемещения указателя мыши (от 1 до 20).
MouseWheelPresent Возвращает значение, указывающее, установлена ли мышь с колесом прокрутки.
MouseWheelScrollDelta Возвращает значение смещения, вызываемого поворотом колесика мыши на одно деление.
MouseWheelScrollLines Возвращает число строк, прокручиваемых при вращении колесика мыши.

Методы, обрабатывающие сообщения ввода пользователя

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

Метод Примечания.
PreFilterMessage Метод перехватывает сообщения в очереди (также известные как отправленные сообщения) на уровне приложения.
PreProcessMessage Метод перехватывает сообщения Windows на уровне формы и элемента управления до их обработки.
WndProc Метод обрабатывает сообщения Windows на уровне формы и элемента управления.
DefWndProc Метод выполняет обработку сообщений Windows по умолчанию на уровне формы и элемента управления. Это обеспечивает минимальную функциональность окна.
OnNotifyMessage Метод перехватывает сообщения на уровне формы и элемента управления после их обработки. Для вызова этого метода необходимо задать бит стиля EnableNotifyMessage.

См. также