Eventos del mouse (ratón) en formularios Windows Forms
Cuando se controla la entrada de mouse, normalmente desea conocer la ubicación del puntero del mouse y el estado de los botones del mismo. En este tema se describe cómo obtener esta información de los eventos del mouse y explica el orden en que se generan los eventos de clic del mouse en los controles de Windows Forms. Para obtener una lista y descripción de todos los eventos del mouse, consulte Cómo funcionan las entradas con mouse en Windows Forms. Consulte también Información general sobre controladores de eventos (Windows Forms) e Información general sobre eventos (Windows Forms).
Información del mouse
Se envía un MouseEventArgs a los controladores de eventos del mouse relacionados con hacer clic en un botón del mouse y el seguimiento de los movimientos del mouse. MouseEventArgs proporciona información sobre el estado actual del mouse, incluida la ubicación del puntero del mouse en coordenadas de cliente, qué botones del mouse se presionan y si se ha desplazado la rueda del mouse. Algunos eventos del mouse, como aquellos que simplemente notifican cuando el puntero del mouse entra o sale de los límites de un control, envían un EventArgs al controlador de eventos sin más información.
Si quiere conocer el estado actual de los botones del mouse o la ubicación del puntero del mouse y no desea controlar un evento del mouse, también puede usar las propiedades MouseButtons y MousePosition de la clase Control. MouseButtons devuelve información acerca de qué botones del mouse están presionados actualmente. MousePosition devuelve las coordenadas de pantalla del puntero del mouse y equivale al valor devuelto por Position.
Conversión de coordenadas de pantalla y de cliente
Como alguna información de ubicación del mouse está en coordenadas de cliente y otra está en coordenadas de pantalla, puede que necesite convertir un punto de un sistema de coordenadas a otro. Puede hacerlo fácilmente con los métodos PointToClient y PointToScreen disponibles en la clase Control.
Comportamiento estándar del evento de clic
Si quiere controlar los eventos de clic del mouse en el orden correcto, necesita saber el orden en que se generan los eventos de clic en los controles de Windows Forms. Todos los controles de Windows Forms generan los eventos de clic en el mismo orden cuando se presiona y se suelta un botón del mouse (independientemente de qué botón sea), excepto cuando se indique otra cosa para cada control en la lista siguiente. La siguiente lista muestra el orden de los eventos generados para un único clic del botón del mouse:
El siguiente es el orden de los eventos generados para un doble clic del botón del mouse:
EventoMouseDown .
EventoMouseDown .
EventoMouseDown .
EventoMouseDown .
EventoMouseDown .
EventoMouseDown . (Esto puede variar, dependiendo de si el control en cuestión tiene el bit de estilo StandardDoubleClick establecido en
true
. Para obtener más información sobre cómo establecer un bit ControlStyles, vea el método SetStyle).EventoMouseDown .
EventoMouseDown .
Para ver un ejemplo de código que muestra el orden de los eventos de clic del mouse, consulte Cómo: Controlar eventos de entrada del usuario en controles de Windows Forms.
Controles individuales
Los controles siguientes no siguen el comportamiento estándar de los eventos de clic del mouse:
-
Nota:
Para el control ComboBox, se produce el comportamiento de eventos que se describe a continuación si el usuario hace clic en el campo de edición, en el botón o en un elemento de la lista.
Clic con el botón primario: Click, MouseClick
Clic con el botón derecho: no se generan eventos de clic
Doble clic con el botón primario: Click, MouseClick; Click, MouseClick
Doble clic con el botón derecho: no se generan eventos de clic
Controles TextBox, RichTextBox, ListBox, MaskedTextBox y CheckedListBox
Nota:
Se produce el comportamiento de eventos que se describe a continuación cuando el usuario hace clic en cualquier parte dentro de estos controles.
Clic con el botón primario: Click, MouseClick
Clic con el botón derecho: no se generan eventos de clic
Doble clic con el botón primario: Click, MouseClick, DoubleClick, MouseDoubleClick
Doble clic con el botón derecho: no se generan eventos de clic
Control ListView
Nota:
Se produce el comportamiento de eventos que se describe a continuación solo cuando el usuario hace clic en los elementos del control ListView. No se genera ningún evento para los clics que se realizan en cualquier otro lugar del control. Además de los eventos que se describen más adelante, están los eventos BeforeLabelEdit y AfterLabelEdit, que pueden resultarle de interés si quiere usar la validación con el control ListView.
Clic con el botón primario: Click, MouseClick
Clic con el botón secundario: Click, MouseClick
Doble clic con el botón primario: Click, MouseClick; Click, MouseClick
Doble clic con el botón secundario: Click, MouseClick; DoubleClick, MouseDoubleClick
Control ListView
Nota:
El comportamiento de eventos que se describe a continuación se produce solo cuando el usuario hace clic en los propios elementos o a la derecha de los elementos en el control TreeView. No se genera ningún evento para los clics que se realizan en cualquier otro lugar del control. Además de los eventos que se describen más adelante, están los eventos BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck y AfterLabelEdit, que pueden resultarle de interés si quiere usar la validación con el control TreeView.
Clic con el botón primario: Click, MouseClick
Clic con el botón secundario: Click, MouseClick
Doble clic con el botón primario: Click, MouseClick; Click, MouseClick
Doble clic con el botón secundario: Click, MouseClick; DoubleClick, MouseDoubleClick
Comportamiento de dibujo de los controles de alternancia
Los controles de alternancia, como los controles que derivan de la clase ButtonBase, tienen el siguiente comportamiento de dibujo particular en combinación con los eventos de clic del mouse:
El usuario presiona el botón del mouse.
El control se dibuja en estado presionado.
Se genera el evento MouseDown.
El usuario suelta el botón del mouse.
El control se dibuja en estado no presionado.
Se genera el evento MouseDown.
Se genera el evento MouseDown.
Se genera el evento MouseDown.
Nota:
Si el usuario mueve el puntero fuera del control de alternancia mientras el botón del mouse está presionado (sacar el mouse del control Button mientras está presionado), el control de alternancia se dibujará en estado no presionado y solo se produce el evento MouseUp. En este caso no se producen los eventos Click o MouseClick.
Vea también
.NET Desktop feedback