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:

  1. EventoMouseDown .
  2. EventoClick .
  3. EventoMouseClick .
  4. EventoMouseUp .

El siguiente es el orden de los eventos generados para un doble clic del botón del mouse:

  1. EventoMouseDown .

  2. EventoClick .

  3. EventoMouseClick .

  4. EventoMouseUp .

  5. EventoMouseDown .

  6. 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.

  7. EventoMouseDoubleClick .

  8. EventoMouseUp .

Controles individuales

Los controles siguientes no siguen el comportamiento estándar de los eventos de clic del mouse:

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:

  1. El usuario presiona el botón del mouse.

  2. El control se dibuja en estado presionado.

  3. Se genera el evento MouseDown.

  4. El usuario suelta el botón del mouse.

  5. El control se dibuja en estado no presionado.

  6. Se genera el evento Click.

  7. Se genera el evento MouseClick.

  8. 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