Show / Hide Table of Contents

События мыши в формах Windows Forms

При обработке ввода данных с помощью мыши обычно необходимо знать положение указателя и состояние кнопок мыши. В этом разделе приводится подробная информация о получении этих сведений из событий мыши и описывается порядок, в котором вызываются события щелчка мыши в элементах управления Windows Forms. Список и описание всех событий мыши, см. в разделе принцип работы мыши ввода в Windows Forms. Также см. в разделе Обзор обработчиков событий (Windows Forms) и Общие сведения о событиях (Windows Forms).

Сведения о мыши

Объект MouseEventArgs отправляется обработчикам событий мыши, связанных с нажатием кнопки мыши и отслеживанием ее движений. MouseEventArgs сведения о текущем состоянии мыши, включая положение указателя мыши в клиентских координатах, какие кнопки мыши, а ли прокрутке колесика мыши. Некоторые события мыши, например те, которые просто уведомляют о том, что указатель мыши пересек границы элемента управления, отправляют обработчику событий объект EventArgs без подробных сведений.

Если нужно знать текущее состояние кнопок мыши или положение ее указателя, но при этом избежать обработки события мыши, можно также использовать свойства MouseButtons и MousePosition класса Control. MouseButtons Возвращает сведения о том, какие кнопки мыши нажаты в данный момент. Свойство MousePosition возвращает экранные координаты указателя мыши, которые эквивалентны значению, возвращаемому методом Position.

Преобразование между экранными и клиентскими координатами

Так как некоторые сведения о положении мыши представлены в клиентских координатах, а другие — в экранных, может потребоваться преобразовать точку из одной системы координат в другую. Это легко сделать с помощью методов PointToClient и PointToScreen, доступных в классе Control.

Стандартное поведение события щелчка

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

  1. MouseDown .

  2. Click .

  3. MouseClick .

  4. MouseUp .

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

  1. MouseDown .

  2. Click .

  3. MouseClick .

  4. MouseUp .

  5. MouseDown .

  6. DoubleClick . (Может изменяться в зависимости от того, установлено ли для бита стиля StandardDoubleClick элемента управления значение true. Подробнее о настройке бита ControlStyles см. в разделе, посвященном методу SetStyle.)

  7. MouseDoubleClick .

  8. MouseUp .

Пример кода, который демонстрирует порядок мыши события щелчка мыши, см. в разделе как: Дескриптор пользовательского ввода, события в Windows Forms, элементы управления.

Особые элементы управления

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

  • Button, CheckBox, ComboBox, и RadioButton элементов управления

    Note

    Если пользователь щелкает поле редактирования, кнопку или элемент в списке, то для элемента управления ComboBox возникают описанные ниже события.

    • Щелчок левой кнопкой: Click, MouseClick

    • Щелкните правой кнопкой мыши: Событие щелчка не вызывается

    • Двойной щелчок левой: Click, MouseClick; Click, MouseClick

    • Дважды щелкните справа: Событие щелчка не вызывается

  • TextBox, RichTextBox, ListBox, MaskedTextBox, и CheckedListBox элементов управления

    Note

    Если пользователь щелкает любое место внутри этих элементов управления, то возникают описанные ниже события.

    • Щелчок левой кнопкой: Click, MouseClick

    • Щелкните правой кнопкой мыши: Событие щелчка не вызывается

    • Двойной щелчок левой: Click, MouseClick, DoubleClick, MouseDoubleClick

    • Дважды щелкните справа: Событие щелчка не вызывается

  • ListView элемент управления

    Note

    Указанные ниже события возникают только в том случае, если пользователь щелкает элементы в ListView. Если пользователь щелкает мышью в любом другом месте элемента управления, то события не вызываются. В дополнение к событиям, описанным ниже, существуют события BeforeLabelEdit и AfterLabelEdit, которые могут представлять интерес, если нужно выполнять проверку с помощью элемента управления ListView.

    • Щелчок левой кнопкой: Click, MouseClick

    • Щелкните правой кнопкой мыши: Click, MouseClick

    • Двойной щелчок левой: Click, MouseClick; DoubleClick, MouseDoubleClick

    • Справа дважды щелкните: Click, MouseClick; DoubleClick, MouseDoubleClick

  • TreeView элемент управления

    Note

    Указанные ниже события возникают только в том случае, если пользователь щелкает сами элементы или справа от них в элементе управления TreeView. Если пользователь щелкает мышью в любом другом месте элемента управления, то события не вызываются. В дополнение к событиям, описанным ниже, существуют события BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck и AfterLabelEdit, которые могут представлять интерес, если нужно выполнять проверку с помощью элемента управления TreeView.

    • Щелчок левой кнопкой: Click, MouseClick

    • Щелкните правой кнопкой мыши: Click, MouseClick

    • Двойной щелчок левой: Click, MouseClick; DoubleClick, MouseDoubleClick

    • Справа дважды щелкните: Click, MouseClick; DoubleClick, MouseDoubleClick

Поведение отрисовки для переключателей

Переключатели, такие как элементы управления, производные от класса ButtonBase, имеют описанное ниже нестандартное поведение отрисовки в сочетании с событиями щелчка.

  1. Пользователь нажимает кнопку мыши.

  2. Элемент управления отрисовывается в состоянии "нажато".

  3. Возникает событие MouseDown.

  4. Пользователь отпускает кнопку мыши.

  5. Элемент управления отрисовывается в состоянии "отпущено".

  6. Возникает событие Click.

  7. Возникает событие MouseClick.

  8. Возникает событие MouseUp.

    Note

    Если пользователь перемещает указатель за границы переключателя при нажатой кнопке мыши (например, перемещает указатель мыши за границы элемента управления Button, когда он нажат), переключатель будет отрисовываться в состоянии "отпущено" и происходит только событие MouseUp. События Click и MouseClick в этой ситуации не наступают.

См. также

  • Ввод данных мышью в приложении Windows Forms
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX