Осуществление ввода мышью в Windows Forms
Обновлен: Ноябрь 2007
Получение и обработка ввода мыши — важная часть каждого приложения Windows. Можно обработать события мыши для выполнения действий в приложении или использовать положение указателя мыши для проверки нажатия или других действий. Кроме того, можно изменить способ обработки ввода мыши элементами управления в приложении. В этом разделе подробно описываются события мыши и способы получения и изменения системных параметров для мыши. Дополнительные сведения о данных, передаваемых с событиями мыши, и порядке, в котором поступают события щелчка мыши, см. в разделе События мыши в формах Windows Forms.
Положение указателя мыши и проверка нажатия
Когда пользователь перемещает мышь, операционная система перемещает указатель мыши. Указатель содержит одну точку, которая называется активной точкой указателя мыши; операционная система отслеживает эту точку и распознает ее как положение указателя. Когда пользователь перемещает мышь или нажимает кнопку мыши, класс Control, который содержит свойство HotSpot, вызывает соответствующее событие мыши. Текущее положение мыши можно получить через свойство Location класса MouseEventArgs при обработке события мыши или с помощью свойства Position класса Cursor. Затем сведения о положении мыши можно использовать для проверки нажатия и последующего выполнения действия, основанного на расположении мыши. Возможность проверки нажатия встроена в некоторые элементы управления Windows Forms, например в элементы управления ListView, TreeView, MonthCalendar и DataGridView. При использовании с соответствующими событиями мыши, например с событием MouseHover, проверка нажатия может быть весьма полезной для определения конкретных действий приложения.
События мыши
Основным способом реагирования на ввод мыши является обработка событий мыши. В следующей таблице перечислены события мыши и указано, когда они вызываются.
Событие мыши |
Описание |
---|---|
Это событие происходит при отпускании кнопки мыши, обычно перед событием MouseUp. Обработчик этого события получает аргумента типа EventArgs. Данное событие обрабатывается при необходимости определить, когда происходит щелчок. |
|
Это событие возникает при щелчке элемента управления мышью. Обработчик этого события получает аргумента типа MouseEventArgs. Данное событие обрабатывается при необходимости получить сведения о мыши в момент щелчка. |
|
Это событие возникает при двойном щелчке элемента управления. Обработчик этого события получает аргумента типа EventArgs. Данное событие обрабатывается при необходимости определить, когда происходит двойной щелчок. |
|
Это событие возникает при двойном щелчке по элементу управления мышью. Обработчик этого события получает аргумента типа MouseEventArgs. Данное событие обрабатывается при необходимости получить сведения о мыши в момент двойного щелчка. |
|
Это событие происходит, если пользователь нажимает кнопку мыши в тот момент, когда указатель мыши находится над элементом управления. Обработчик этого события получает аргумента типа MouseEventArgs. |
|
Это событие происходит, когда указатель мыши входит в рамку или клиентскую область элемента управления, в зависимости от типа элемента управления. Обработчик этого события получает аргумента типа EventArgs. |
|
Это событие происходит, когда указатель мыши останавливается над элементом управления. Обработчик этого события получает аргумента типа EventArgs. |
|
Это событие происходит, когда указатель мыши покидает рамку или клиентскую область элемента управления, в зависимости от типа элемента управления. Обработчик этого события получает аргумента типа EventArgs. |
|
Это событие возникает при перемещении указателя мыши над элементом управления. Обработчик этого события получает аргумента типа MouseEventArgs. |
|
Это событие происходит, если пользователь отпускает кнопку мыши в тот момент, когда указатель мыши находится над элементом управления. Обработчик этого события получает аргумента типа MouseEventArgs. |
|
Это событие происходит, когда пользователь прокручивает колесико мыши, в то время как на элементе управления установлен фокус. Обработчик этого события получает аргумента типа MouseEventArgs. Для определения, насколько прокручена мышь, можно использовать свойство Delta аргумента MouseEventArgs. |
Изменение ввода мыши и определение системных параметров
Можно определить и изменить способ, которым элемент управления обрабатывает ввод мыши, путем создания производного элемента управления и использования методов GetStyle и SetStyle. Метод SetStyle принимает битовое сочетание значений ControlStyles, чтобы определить, будет ли элемент управления реализовывать стандартное поведение одинарного или двойного щелчка или обрабатывать события мыши особым образом. Кроме того, класс SystemInformation включает свойства, которые описывают возможности мыши и указывают способы взаимодействия мыши с операционной системой. В следующей таблице приведены сводные сведения об этих свойствах.
Свойство |
Описание |
---|---|
Получает размеры области (в точках), в которой пользователь должен щелкнуть дважды, чтобы операционная система обработала два щелчка как двойной щелчок. |
|
Получает максимальное число миллисекунд, которое может пройти между первым и вторым щелчком, чтобы операционная система рассматривала эти действия мыши как двойной щелчок. |
|
Получает число кнопок мыши. |
|
Получает значение, указывающее, могут ли меняться местами функции левой и правой кнопок мыши. |
|
Получает размеры прямоугольника (в точках), в котором должен находиться указатель мыши в течении времени наведения мыши перед тем, как генерируется сообщение о наведении мыши. |
|
Получает время в миллисекундах, в течение которого указатель мыши должен оставаться в прямоугольнике наведения перед тем, как генерируется сообщение о наведении мыши. |
|
Получает значение, указывающее, установлена ли мышь. |
|
Получает значение, указывающее текущую скорость мыши, от 1 до 20. |
|
Получает значение, указывающее, установлена ли мышь с колесом прокрутки. |
|
Получает значение приращения, выполняемого при одном повороте колесика мыши. |
|
Получает число строк, прокручиваемых при вращении колесика мыши. |
См. также
Основные понятия
Указатели мыши в Windows Forms