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


Обзор использования мыши

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

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

События мыши

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

Расположение мыши и проверка попаданий

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

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

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

Изменение параметров ввода мыши

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

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

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

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

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

См. также