Windows forms правая кнопка мыши

Использование событий мыши (Windows Forms .NET) Using mouse events (Windows Forms .NET)

В большинстве программ Windows Forms для обработки ввода с помощью мыши используются события мыши. Most Windows Forms programs process mouse input by handling the mouse events. В этой статье содержится обзор событий мыши, включая сведения об использовании и предоставляемые данные для каждого события. This article provides an overview of the mouse events, including details on when to use each event and the data that is supplied for each event. Дополнительные сведения о событиях в целом см. в разделе Общие сведения о событиях (Windows Forms .NET). For more information about events in general, see Events overview (Windows Forms .NET).

Документация для Руководства по рабочему столу по .NET 5 (и .NET Core) находится в разработке. The Desktop Guide documentation for .NET 5 (and .NET Core) is under construction.

События мыши Mouse events

Основной способ реагирования на ввод с помощью мыши заключается в обработке событий мыши. The primary way to respond to mouse input is to handle mouse events. В следующей таблице показаны события мыши и описание их возникновения. The following table shows the mouse events and describes when they’re raised.

Событие мыши Mouse Event Описание Description
Click Это событие возникает при отпускании кнопки мыши, как правило, перед событием MouseUp. This event occurs when the mouse button is released, typically before the MouseUp event. Обработчик этого события принимает аргумент типа EventArgs. The handler for this event receives an argument of type EventArgs. Обрабатывать это событие следует в случае, если нужно только определить, когда происходит щелчок. Handle this event when you only need to determine when a click occurs.
MouseClick Это событие возникает, когда пользователь щелкает элемент управления. This event occurs when the user clicks the control with the mouse. Обработчик этого события принимает аргумент типа MouseEventArgs. The handler for this event receives an argument of type MouseEventArgs. Обрабатывать это событие следует в случае, когда необходимо получить сведения о мыши при щелчке. Handle this event when you need to get information about the mouse when a click occurs.
DoubleClick Это событие происходит при двойном щелчке элемента управления. This event occurs when the control is double-clicked. Обработчик этого события принимает аргумент типа EventArgs. The handler for this event receives an argument of type EventArgs. Обрабатывать это событие следует в случае, если нужно только определить, когда происходит двойной щелчок. Handle this event when you only need to determine when a double-click occurs.
MouseDoubleClick Это событие возникает, когда пользователь дважды щелкает мышью. This event occurs when the user double-clicks the control with the mouse. Обработчик этого события принимает аргумент типа MouseEventArgs. The handler for this event receives an argument of type MouseEventArgs. Обрабатывать это событие следует в случае, когда необходимо получить сведения о мыши при двойном щелчке. Handle this event when you need to get information about the mouse when a double-click occurs.
MouseDown Это событие происходит при нажатии пользователем кнопки мыши, когда указатель мыши находится на элементе управления. This event occurs when the mouse pointer is over the control and the user presses a mouse button. Обработчик этого события принимает аргумент типа MouseEventArgs. The handler for this event receives an argument of type MouseEventArgs.
MouseEnter Это событие возникает, когда указатель мыши перемещается на границу или клиентскую область элемента управления в зависимости от типа элемента управления. This event occurs when the mouse pointer enters the border or client area of the control, depending on the type of control. Обработчик этого события принимает аргумент типа EventArgs. The handler for this event receives an argument of type EventArgs.
MouseHover Это событие возникает при остановке и помещении указателя мыши на элемент управления. This event occurs when the mouse pointer stops and rests over the control. Обработчик этого события принимает аргумент типа EventArgs. The handler for this event receives an argument of type EventArgs.
MouseLeave Это событие возникает, когда указатель мыши покидает границу или клиентскую область элемента управления в зависимости от типа элемента управления. This event occurs when the mouse pointer leaves the border or client area of the control, depending on the type of the control. Обработчик этого события принимает аргумент типа EventArgs. The handler for this event receives an argument of type EventArgs.
MouseMove Это событие возникает при перемещении указателя мыши на элемент управления. This event occurs when the mouse pointer moves while it is over a control. Обработчик этого события принимает аргумент типа MouseEventArgs. The handler for this event receives an argument of type MouseEventArgs.
MouseUp Это событие возникает, когда указатель мыши находится на элементе управления и пользователь отпускает кнопку мыши. This event occurs when the mouse pointer is over the control and the user releases a mouse button. Обработчик этого события принимает аргумент типа MouseEventArgs. The handler for this event receives an argument of type MouseEventArgs.
MouseWheel Это событие возникает, когда пользователь вращает колесико мыши, когда фокус находится на элементе управления. This event occurs when the user rotates the mouse wheel while the control has focus. Обработчик этого события принимает аргумент типа MouseEventArgs. The handler for this event receives an argument of type MouseEventArgs. Для определения того, насколько прокручено колесико мыши, можно использовать свойство Delta элемента MouseEventArgs. You can use the Delta property of MouseEventArgs to determine how far the mouse has scrolled.

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

Объект MouseEventArgs отправляется обработчикам событий мыши, связанных с нажатием кнопки мыши и отслеживанием ее движений. A MouseEventArgs is sent to the handlers of mouse events related to clicking a mouse button and tracking mouse movements. Объект MouseEventArgs предоставляет сведения о текущем состоянии мыши, включая положение указателя мыши в клиентских координатах, какие кнопки мыши нажаты и произошла ли прокрутка колесика мыши. MouseEventArgs provides information about the current state of the mouse, including the location of the mouse pointer in client coordinates, which mouse buttons are pressed, and whether the mouse wheel has scrolled. Некоторые события мыши, например те, которые возникают, когда указатель мыши пересек границы элемента управления, отправляют обработчику событий объект EventArgs без подробных сведений. Several mouse events, such as those that are raised when the mouse pointer has entered or left the bounds of a control, send an EventArgs to the event handler with no further information.

Если нужно знать текущее состояние кнопок мыши или положение ее указателя, но при этом избежать обработки события мыши, можно также использовать свойства MouseButtons и MousePosition класса Control. If you want to know the current state of the mouse buttons or the location of the mouse pointer, and you want to avoid handling a mouse event, you can also use the MouseButtons and MousePosition properties of the Control class. Свойство MouseButtons возвращает сведения о том, какие кнопки мыши в настоящее время нажаты. MouseButtons returns information about which mouse buttons are currently pressed. Свойство MousePosition возвращает экранные координаты указателя мыши, которые эквивалентны значению, возвращаемому методом Position. The MousePosition returns the screen coordinates of the mouse pointer and is equivalent to the value returned by Position.

Преобразование между экранными и клиентскими координатами Converting Between Screen and Client Coordinates

Так как некоторые сведения о положении мыши представлены в клиентских координатах, а другие — в экранных, может потребоваться преобразовать точку из одной системы координат в другую. Because some mouse location information is in client coordinates and some is in screen coordinates, you may need to convert a point from one coordinate system to the other. Это легко сделать с помощью методов PointToClient и PointToScreen, доступных в классе Control. You can do this easily by using the PointToClient and PointToScreen methods available on the Control class.

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

Если требуется обрабатывать события щелчка мыши в определенном порядке, необходимо знать порядок, в котором вызываются события щелчка в элементах управления Windows Forms. If you want to handle mouse click events in the proper order, you need to know the order in which click events are raised in Windows Forms controls. Когда любая поддерживаемая кнопка мыши нажимается и отпускается, все элементы управления Windows Forms, кроме отмеченных в списке ниже, вызывают события щелчка в одном и том же порядке. All Windows Forms controls raise click events in the same order when any supported mouse button is pressed and released, except where noted in the following list for individual controls. Ниже приведен порядок событий, вызываемых одинарным щелчком мыши. The following list shows the order of events raised for a single mouse-button click:

Ниже приведен порядок событий, вызываемых двойным щелчком мыши. The following is the order of events raised for a double mouse-button click:

Может изменяться в зависимости от того, установлено ли для бита стиля StandardDoubleClick элемента управления значение true . This can vary, depending on whether the control in question has the StandardDoubleClick style bit set to true . Подробнее о настройке бита ControlStyles см. в разделе, посвященном методу SetStyle. For more information about how to set a ControlStyles bit, see the SetStyle method.

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

Поведение перечисленных ниже элементов управления при щелчке мыши не соответствует стандартному. The following controls don’t conform to the standard mouse click event behavior:

Если пользователь щелкает поле редактирования, кнопку или элемент в списке, то для элемента управления ComboBox возникают описанные ниже события. For the ComboBox control, the event behavior detailed later occurs if the user clicks on the edit field, the button, or on an item within the list.

  • Щелчок левой кнопкой мыши: Click, MouseClickLeft click: Click, MouseClick
  • Щелчок правой кнопкой мыши: События щелчка не вызываются Right click: No click events raised
  • Двойной щелчок левой кнопкой мыши: Click, MouseClick; Click, MouseClickLeft double-click: Click, MouseClick; Click, MouseClick
  • Двойной щелчок правой кнопкой мыши: События щелчка не вызываются Right double-click: No click events raised
  • Если пользователь щелкает любое место внутри этих элементов управления, то возникают описанные ниже события. The event behavior detailed later occurs when the user clicks anywhere within these controls.

    • Щелчок левой кнопкой мыши: Click, MouseClickLeft click: Click, MouseClick
    • Щелчок правой кнопкой мыши: События щелчка не вызываются Right click: No click events raised
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick, DoubleClick, MouseDoubleClickLeft double-click: Click, MouseClick, DoubleClick, MouseDoubleClick
    • Двойной щелчок правой кнопкой мыши: События щелчка не вызываются Right double-click: No click events raised
  • Элемент управления ListView ListView control

    Указанные ниже события возникают только в том случае, если пользователь щелкает элементы в ListView. The event behavior detailed later occurs only when the user clicks on the items in the ListView control. Если пользователь щелкает мышью в любом другом месте элемента управления, то события не вызываются. No events are raised for clicks anywhere else on the control. В дополнение к событиям, описанным ниже, существуют события BeforeLabelEdit и AfterLabelEdit, которые могут представлять интерес, если нужно выполнять проверку с помощью элемента управления ListView. In addition to the events described later, there are the BeforeLabelEdit and AfterLabelEdit events, which may be of interest to you if you want to use validation with the ListView control.

    • Щелчок левой кнопкой мыши: Click, MouseClickLeft click: Click, MouseClick
    • Щелчок правой кнопкой мыши: Click, MouseClickRight click: Click, MouseClick
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClickLeft double-click: Click, MouseClick; DoubleClick, MouseDoubleClick
    • Двойной щелчок правой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClickRight double-click: Click, MouseClick; DoubleClick, MouseDoubleClick
  • Элемент управления TreeView TreeView control

    Указанные ниже события возникают только в том случае, если пользователь щелкает сами элементы или справа от них в элементе управления TreeView. The event behavior detailed later occurs only when the user clicks on the items themselves or to the right of the items in the TreeView control. Если пользователь щелкает мышью в любом другом месте элемента управления, то события не вызываются. No events are raised for clicks anywhere else on the control. В дополнение к событиям, описанным ниже, существуют события BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck и AfterLabelEdit, которые могут представлять интерес, если нужно выполнять проверку с помощью элемента управления TreeView. In addition to those described later, there are the BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck, and AfterLabelEdit events, which may be of interest to you if you want to use validation with the TreeView control.

    • Щелчок левой кнопкой мыши: Click, MouseClickLeft click: Click, MouseClick
    • Щелчок правой кнопкой мыши: Click, MouseClickRight click: Click, MouseClick
    • Двойной щелчок левой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClickLeft double-click: Click, MouseClick; DoubleClick, MouseDoubleClick
    • Двойной щелчок правой кнопкой мыши: Click, MouseClick; DoubleClick, MouseDoubleClickRight double-click: Click, MouseClick; DoubleClick, MouseDoubleClick
  • Поведение отрисовки для переключателей Painting behavior of toggle controls

    Переключатели, такие как элементы управления, производные от класса ButtonBase, имеют описанное ниже нестандартное поведение отрисовки в сочетании с событиями щелчка. Toggle controls, such as the controls deriving from the ButtonBase class, have the following distinctive painting behavior in combination with mouse click events:

    Пользователь нажимает кнопку мыши. The user presses the mouse button.

    Элемент управления отрисовывается в состоянии «нажато». The control paints in the pressed state.

    Возникает событие MouseDown. The MouseDown event is raised.

    Пользователь отпускает кнопку мыши. The user releases the mouse button.

    Элемент управления отрисовывается в состоянии «отпущено». The control paints in the raised state.

    Возникает событие Click. The Click event is raised.

    Возникает событие MouseClick. The MouseClick event is raised.

    Возникает событие MouseUp. The MouseUp event is raised.

    Если пользователь перемещает указатель за границы переключателя при нажатой кнопке мыши (например, перемещает указатель мыши за границы элемента управления Button, когда он нажат), переключатель будет отрисовываться в состоянии «отпущено» и происходит только событие MouseUp. If the user moves the pointer out of the toggle control while the mouse button is down (such as moving the mouse off the Button control while it is pressed), the toggle control will paint in the raised state and only the MouseUp event occurs. События Click и MouseClick в этой ситуации не наступают. The Click or MouseClick events will not occur in this situation.

    Читайте также:  Не открывает flash mac os
    Оцените статью