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


Осуществление ввода мышью в Windows Forms

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

Положение указателя мыши и проверка нажатия

Когда пользователь перемещает мышь, операционная система перемещает указатель мыши. Указатель содержит одну точку, которая называется активной точкой указателя мыши; операционная система отслеживает эту точку и распознает ее как положение указателя. Когда пользователь перемещает мышь или нажимает кнопку мыши, класс Control, который содержит свойство HotSpot, вызывает соответствующее событие мыши. Текущее положение мыши можно получить через свойство Location класса MouseEventArgs при обработке события мыши или с помощью свойства 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. Для определения, насколько прокручена мышь, можно использовать свойство Delta аргумента MouseEventArgs.

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

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

Свойство

Описание

DoubleClickSize

Получает размеры области (в точках), в которой пользователь должен щелкнуть дважды, чтобы операционная система обработала два щелчка как двойной щелчок.

DoubleClickTime

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

MouseButtons

Получает число кнопок мыши.

MouseButtonsSwapped

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

MouseHoverSize

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

MouseHoverTime

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

MousePresent

Получает значение, указывающее, установлена ли мышь.

MouseSpeed

Получает значение, указывающее текущую скорость мыши, от 1 до 20.

MouseWheelPresent

Получает значение, указывающее, установлена ли мышь с колесом прокрутки.

MouseWheelScrollDelta

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

MouseWheelScrollLines

Получает число строк, прокручиваемых при вращении колесика мыши.

См. также

Основные понятия

Захват мыши в Windows Forms

Указатели мыши в Windows Forms

Другие ресурсы

Ввод данных мышью в приложении Windows Forms