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