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:

  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, 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).

  7. EventoMouseDoubleClick .

  8. EventoMouseUp .

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:

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