Как работает ввод мыши в Windows Forms
Получение и обработка ввода мыши является важной частью каждого приложения Windows. Вы можете обрабатывать события мыши для выполнения действия в приложении или использовать сведения о расположении мыши для выполнения тестирования попаданий или других действий. Кроме того, можно изменить способ, которым элементы управления в приложении обрабатывают ввод мыши. В этом разделе подробно описаны эти события мыши и способы получения и изменения параметров системы мыши. Дополнительные сведения о данных, предоставляемых событиями мыши, и порядке вызова событий щелчка мыши см. в разделе События мыши в Windows Forms.
Расположение мыши и Hit-Testing
Когда пользователь перемещает мышь, операционная система перемещает указатель мыши. Указатель мыши содержит один пиксель, называемый горячей точкой, которую операционная система отслеживает и распознает как позицию указателя. Когда пользователь перемещает мышь или нажимает кнопку мыши, Control, которая содержит HotSpot вызывает соответствующее событие мыши. Текущее положение мыши можно получить с помощью свойства LocationMouseEventArgs при обработке события мыши или с помощью свойства Position класса Cursor. Впоследствии можно использовать информацию о местоположении мыши для тестирования попаданий и затем выполнить действие в зависимости от расположения мыши. Возможности тестирования попаданий встроены в несколько элементов управления в Windows Forms, таких как ListView, TreeView, MonthCalendar и DataGridView. Использование тестирования на попадание с соответствующим событием мыши, например MouseHover, очень полезно для определения времени, когда ваше приложение должно выполнять определенное действие.
События мыши
Основным способом реагирования на входные данные мыши является обработка событий мыши. В следующей таблице показаны события мыши и указывается, когда они возникают.
Событие мыши | Описание |
---|---|
Click | Это событие возникает при выпуске кнопки мыши, обычно перед событием MouseUp. Обработчик этого события получает аргумент типа EventArgs. Обработайте это событие только тогда, когда необходимо определить, когда происходит щелчок. |
MouseClick | Это событие возникает, когда пользователь щелкает элемент управления мышью. Обработчик этого события получает аргумент типа MouseEventArgs. Обработайте это событие, когда необходимо получить сведения о мыши при нажатии кнопки. |
DoubleClick | Это событие возникает при двойном щелчке элемента управления. Обработчик этого события получает аргумент типа EventArgs. Обработайте это событие, если необходимо определить, когда происходит двойной щелчок. |
MouseDoubleClick | Это событие возникает, когда пользователь дважды щелкает элемент управления мышью. Обработчик этого события получает аргумент типа MouseEventArgs. Обработайте это событие, когда необходимо получить сведения о мыши при двойном щелчке. |
MouseDown | Это событие возникает, когда указатель мыши находится на элементе управления, и пользователь нажимает кнопку мыши. Обработчик этого события получает аргумент типа MouseEventArgs. |
MouseEnter | Это событие возникает, когда указатель мыши входит в границу или клиентскую область элемента управления в зависимости от его типа. Обработчик этого события получает аргумент типа EventArgs. |
MouseHover | Это событие возникает, когда указатель мыши останавливается и остается над контролом. Обработчик этого события получает аргумент типа EventArgs. |
MouseLeave | Это событие возникает, когда указатель мыши покидает границу или клиентская область элемента управления в зависимости от типа элемента управления. Обработчик этого события получает аргумент типа EventArgs. |
MouseMove | Это событие возникает при перемещении указателя мыши во время его перемещений над элементом управления. Обработчик этого события получает аргумент типа MouseEventArgs. |
MouseUp | Это событие возникает, когда указатель мыши находится на элементе управления, и пользователь освобождает кнопку мыши. Обработчик этого события получает аргумент типа MouseEventArgs. |
MouseWheel | Это событие возникает, когда пользователь поворачивает колесико мыши, пока элемент управления имеет фокус. Обработчик этого события получает аргумент типа MouseEventArgs. Вы можете использовать свойство DeltaMouseEventArgs, чтобы определить, насколько далеко прокручена мышь. |
Изменение входных данных мыши и обнаружение параметров системы
Вы можете обнаружить и изменить способ обработки ввода мыши, исходя из элемента управления и используя методы GetStyle и SetStyle. Метод SetStyle принимает побитовое сочетание значений ControlStyles, чтобы определить, будет ли элемент управления иметь стандартное поведение щелчка или двойного щелчка, или будет ли он обрабатывать операции с мышью самостоятельно. Кроме того, класс SystemInformation включает свойства, описывающие возможности мыши и указывающие, как мышь взаимодействует с операционной системой. В следующей таблице перечислены эти свойства.
Свойство | Описание |
---|---|
DoubleClickSize | Получает размеры (в пикселях) области, в которой пользователь должен дважды щелкнуть, чтобы операционная система считала это двойным щелчком. |
DoubleClickTime | Получает максимальное количество миллисекунд, которое может пройти между первым и вторым щелчком, чтобы операционная система сочла действие мыши двойным щелчком. |
MouseButtons | Возвращает количество кнопок мыши. |
MouseButtonsSwapped | Возвращает значение, указывающее, были ли переключены функции левой и правой кнопки мыши. |
MouseHoverSize | Получает размер в пикселях прямоугольника, в пределах которого указатель мыши должен оставаться в течение времени, необходимого для вызова сообщения о наведении курсора. |
MouseHoverTime | Получает время в миллисекундах, которое указатель мыши должен оставаться в прямоугольнике наведения указателя мыши перед созданием сообщения наведения мыши. |
MousePresent | Возвращает значение, указывающее, установлен ли мышь. |
MouseSpeed | Возвращает значение, указывающее текущую скорость мыши от 1 до 20. |
MouseWheelPresent | Возвращает значение, указывающее, установлена ли мышь с колесикой мыши. |
MouseWheelScrollDelta | Возвращает значение разностного значения приращения одного поворота колесика мыши. |
MouseWheelScrollLines | Получает количество строк для прокрутки при повороте колесика мыши. |
См. также
.NET Desktop feedback