Uso de eventos del mouse (Windows Forms para .NET)
La mayoría de los programas de Windows Forms procesan la entrada del mouse mediante el control de los eventos del mouse. En este artículo se ofrece una introducción a los eventos del mouse, incluidos detalles sobre cuándo usar cada evento y los datos que se proporcionan para cada uno. Para obtener más información sobre los eventos en general, vea Información general sobre eventos (Windows Forms para .NET).
Eventos de mouse
La forma principal de responder a la entrada del mouse es controlar los eventos del mouse. En la tabla siguiente se muestran los eventos del mouse y se describe cuándo se generan.
Evento del mouse | Descripción |
---|---|
Click | Este evento se produce cuando se suelta el botón del mouse, normalmente antes del evento MouseUp. El controlador de este evento recibe un argumento del tipo EventArgs. Controle este evento cuando solo necesite determinar cuándo se produce un clic. |
MouseClick | Este evento se produce cuando el usuario hace clic en el control con el mouse. El controlador de este evento recibe un argumento del tipo MouseEventArgs. Controle este evento cuando necesite obtener información sobre el mouse cuando se produce un clic. |
DoubleClick | Este evento se produce cuando se hace doble clic en el control. El controlador de este evento recibe un argumento del tipo EventArgs. Controle este evento cuando solo necesite determinar cuándo se produce un doble clic. |
MouseDoubleClick | Este evento se produce cuando el usuario hace doble clic en el control con el mouse. El controlador de este evento recibe un argumento del tipo MouseEventArgs. Controle este evento cuando necesite obtener información sobre el mouse cuando se produce un doble clic. |
MouseDown | Este evento se produce cuando el usuario presiona un botón del mouse mientras el puntero del mouse está sobre el control. El controlador de este evento recibe un argumento del tipo MouseEventArgs. |
MouseEnter | Este evento se produce cuando el puntero del mouse entra en el borde o área cliente del control, en función del tipo de control. El controlador de este evento recibe un argumento del tipo EventArgs. |
MouseHover | Este evento se produce cuando el puntero del mouse se detiene y se sitúa sobre el control. El controlador de este evento recibe un argumento del tipo EventArgs. |
MouseLeave | Este evento se produce cuando el puntero del mouse sale del borde o área cliente del control, en función del tipo de control. El controlador de este evento recibe un argumento del tipo EventArgs. |
MouseMove | Este evento se produce al mover el puntero del mouse mientras se encuentra sobre un control. El controlador de este evento recibe un argumento del tipo MouseEventArgs. |
MouseUp | Este evento se produce cuando el puntero del mouse se sitúa sobre el control y el usuario suelta un botón del mouse. El controlador de este evento recibe un argumento del tipo MouseEventArgs. |
MouseWheel | Este evento se produce cuando el usuario gira la rueda del mouse mientras el control tiene el foco. El controlador de este evento recibe un argumento del tipo MouseEventArgs. Puede usar la propiedad Delta de MouseEventArgs para determinar hasta qué punto se ha desplazado el mouse. |
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 los que simplemente se generan cuando el puntero del mouse entra o sale de los límites de un control, envían un objeto 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 cualquier botón del mouse que se admita, excepto cuando se indique algo distinto en la lista siguiente de controles individuales. La siguiente lista muestra el orden de los eventos generados para un único clic del botón del mouse:
- EventoMouseDown .
- EventoClick .
- EventoMouseClick .
- EventoMouseUp .
El siguiente es el orden de los eventos generados para un doble clic del botón del mouse:
EventoMouseDown .
EventoClick .
EventoMouseClick .
EventoMouseUp .
EventoMouseDown .
EventoDoubleClick .
Esto puede variar según si el control en cuestión tiene el bit de estilo StandardDoubleClick establecido en
true
o no. Para obtener más información sobre cómo establecer un bit ControlStyles, vea el método SetStyle.EventoMouseDoubleClick .
EventoMouseUp .
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 derecho: Click, MouseClick
- Doble clic con el botón primario: Click, MouseClick; DoubleClick, MouseDoubleClick
- Doble clic con el botón derecho: Click, MouseClick; DoubleClick, MouseDoubleClick
Control TreeView
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 derecho: Click, MouseClick
- Doble clic con el botón primario: Click, MouseClick; DoubleClick, MouseDoubleClick
- Doble clic con el botón derecho: 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 Click.
Se genera el evento MouseClick.
Se genera el evento MouseUp.
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