Eventos del mouse (ratón) en formularios Windows Forms
Actualización: noviembre 2007
Cuando se controla la entrada del mouse, normalmente se desea conocer la ubicación del puntero del mouse y el estado de los botones del mismo. Este tema proporciona información acerca de cómo obtener información de los eventos del ratón y explica el orden en que se producen los eventos clic del mouse en los controles de formularios Windows Forms. Para obtener una lista y la descripción de todos los eventos del mouse, vea Funcionamiento de la entrada del mouse (ratón) en los formularios Windows Forms.
Información del mouse
Se envía un MouseEventArgs a los controladores de eventos del mouse relacionados con el clic y el seguimiento de los movimientos del mouse. MouseEventArgs proporciona información acerca del estado actual del mouse incluyendo la ubicación del puntero en coordenadas del cliente, qué botón del mouse se ha presionado y si se ha movido la rueda. Algunos eventos del mouse, como aquellos que simplemente notifican el hecho de que el puntero entre en lo límites de un control envían un EventArgs al controlador de eventos sin más información.
Si desea saber el estado actual de los botones del mouse o la ubicación del puntero pero no desea controlar un evento del mouse, puede utilizar las propiedades MouseButtons y MousePosition de la clase Control. MouseButtons devuelve información acerca de los botones del mouse que están presionados. MousePosition devuelve las coordenadas de la pantalla del puntero del mouse y es equivalente al valor devuelto por Position.
Conversión entre coordenadas del cliente y de pantalla
Puesto que parte de la información de la ubicación del mouse se proporciona en coordinadas del cliente y otra parte en coordenadas de la pantalla, puede que sea necesario convertir un punto de un sistema de coordenadas a otro. Puede hacer esto fácilmente utilizando los métodos PointToClient y PointToScreen disponibles en la clase Control.
Comportamiento estándar del evento clic
Si desea controlar los eventos clic del mouse en el orden adecuado, es necesario que sepa el orden en que se producen los eventos en los controles de formularios Windows Forms. Todos los controles de los formularios Windows Forms desencadenan los eventos en el mismo orden cuando se presiona y se suelta un botón del mouse (independientemente del botón que sea), salvo cuando se anotan para controles individuales. A continuación se muestra el orden de eventos provocado para un solo clic con el botón del mouse:
Evento MouseDown.
Evento Click.
Evento MouseClick.
Evento MouseUp.
A continuación se muestra el orden de eventos provocado para un doble clic con el botón del mouse:
Evento MouseDown.
Evento Click.
Evento MouseClick.
Evento MouseUp.
Evento MouseDown.
Evento DoubleClick. (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.)
Evento MouseDoubleClick.
Evento MouseUp.
Para obtener un ejemplo de código que muestra el orden de los eventos clic del mouse, vea Cómo: Controlar eventos del usuario en controles de formularios Windows Forms.
Controles individuales
Los controles siguientes no se ajustan al comportamiento estándar de los eventos clic:
Button, CheckBox, ComboBox y RadioButton.
Nota: Para el control ComboBox, el comportamiento de eventos descrito a continuación se produce 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 secundario: no se producen eventos de clic
Clic con el botón primario: Click, MouseClick; Click, MouseClick
Doble clic con el botón secundario: no se producen eventos clic
TextBox, RichTextBox, ListBox, MaskedTextBox y CheckedListBox
Nota: El comportamiento de eventos descrito a continuación se produce 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 secundario: no se producen eventos de clic
Clic con el botón primario: Click, MouseClick; DoubleClick, MouseDoubleClick
Doble clic con el botón secundario: no se producen eventos clic
control ListView
Nota: El comportamiento de eventos descrito a continuación sólo aparece cuando el usuario hace clic en los elementos del control ListView. No se produce ningún evento cuando se hace clic en otro lugar del control. Además de los eventos descritos a continuación, están los eventos BeforeLabelEdit y AfterLabelEdit, que podrían tener interés para los programadores que deseen utilizar la validación con el control ListView.
Clic con el botón primario: Click, MouseClick
Clic con el botón secundario: Click, MouseClick
Clic con el botón primario: Click, MouseClick; DoubleClick, MouseDoubleClick
Clic con el botón secundario: Click, MouseClick; DoubleClick, MouseDoubleClick
control TreeView
Nota: El comportamiento de eventos descrito a continuación sólo se produce cuando el usuario hace clic en los propios elementos o a la derecha de éstos en el control TreeView. No se produce ningún evento cuando se hace clic en otro lugar del control. Además de los eventos descritos a continuación, están los eventos BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck y AfterLabelEdit, que podría interesarle si desea utilizar la validación con el control TreeView.
Clic con el botón primario: Click, MouseClick
Clic con el botón secundario: Click, MouseClick
Clic con el botón primario: Click, MouseClick; DoubleClick, MouseDoubleClick
Clic con el botón secundario: Click, MouseClick; DoubleClick, MouseDoubleClick
Comportamiento de dibujo de controles de alternancia
Los controles de comando de alternancia, como los controles que derivan de la clase ButtonBase, tienen el siguiente comportamiento de dibujo distintivo en combinación con eventos clic del mouse:
El usuario presiona el botón del mouse.
El control se dibuja en el estado presionado.
Se provoca el evento MouseDown.
El usuario suelta el botón del mouse.
El control se dibuja con relieve.
Se provoca el evento Click.
Se provoca el evento MouseClick.
Se provoca el evento MouseUp.
Nota: Si el usuario mueve el puntero fuera del control de alternancia mientras el botón del mouse está presionado (como al retirar el mouse del control Button mientras está presionado), el control de alternancia se dibujará con relieve y sólo se produce el evento MouseUp. Los eventos Click o MouseClick no se producirán en esta situación.
Vea también
Otros recursos
Entradas mediante el mouse (ratón) en una aplicación de Windows Forms