Funcionamiento de la entrada del mouse (ratón) en los formularios Windows Forms
Recibir y controlar la entrada del mouse es una parte importante de toda aplicación de Windows. Puede controlar eventos del mouse para realizar una acción en la aplicación o usar la información de ubicación del mouse para realizar pruebas de acceso u otras acciones. Además, puede cambiar la forma en que los controles de la aplicación controlan la entrada del mouse. En este tema se describen estos eventos del mouse en detalle y cómo obtener y cambiar la configuración del sistema para el mouse. Para obtener más información sobre los datos proporcionados con los eventos del mouse y el orden en que se generaron los eventos de clic del mouse, vea Eventos del mouse en Windows Forms.
Ubicación del mouse y Hit-Testing
Cuando el usuario mueve el mouse, el sistema operativo mueve el puntero del mouse. El puntero del mouse contiene un solo píxel, denominado zona activa, del que el sistema operativo realiza un seguimiento y al que reconoce como la posición del puntero. Cuando el usuario mueve el mouse o presiona un botón del mouse, el Control que contiene el HotSpot provoca el evento del mouse adecuado. Puede obtener la posición actual del mouse con la propiedad Location del MouseEventArgs al controlar un evento del mouse o mediante la propiedad Position de la clase Cursor. Posteriormente, puede usar la información de ubicación del mouse para realizar pruebas de acceso y, a continuación, realizar una acción basada en la ubicación del mouse. La funcionalidad de pruebas de posicionamiento está integrada en varios controles de Windows Forms como los controles ListView, TreeView, MonthCalendar y DataGridView. Se usa con el evento de mouse adecuado, por ejemplo, las pruebas de impacto son muy útiles para determinar cuándo la aplicación MouseHover debe realizar una acción específica.
Eventos del 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 elevan.
| 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. |
Cambiar la entrada del mouse y detectar el sistema Configuración
Puede detectar y cambiar la manera en que un control controla la entrada del mouse derivando del control y usando los métodos GetStyle y SetStyle. El método toma una combinación bit a bit de valores para determinar si el control tendrá un comportamiento estándar de clic o doble clic o si el control controlará su propio SetStyle ControlStyles procesamiento del mouse. Además, la clase incluye propiedades que describen las funciones del mouse y especifican cómo interactúa el SystemInformation mouse con el sistema operativo. Estas tareas se resumen en la tabla siguiente.
| Propiedad. | Descripción |
|---|---|
| DoubleClickSize | Obtiene las dimensiones, en píxeles, del área en la que el usuario debe hacer clic dos veces para que el sistema operativo considere los dos clics como un doble clic. |
| DoubleClickTime | Obtiene el número máximo de milisegundos que pueden transcurrir entre un primer clic y un segundo clic para que el sistema operativo considere la acción del mouse como un doble clic. |
| MouseButtons | Obtiene el número de botones del mouse. |
| MouseButtonsSwapped | Obtiene un valor que indica si se intercambiaron las funciones de los botones del mouse. |
| MouseHoverSize | Obtiene las dimensiones, en píxeles, del rectángulo en el que el puntero del mouse debe permanecer un tiempo de desplazamiento para que se genere un mensaje de desplazamiento. |
| MouseHoverTime | Obtiene el tiempo, en milisegundos, que el puntero del mouse tiene que permanecer en el rectángulo seleccionado mediante movimiento del mouse hasta que se genera un mensaje de movimiento del mouse. |
| MousePresent | Obtiene un valor que indica si hay un mouse instalado. |
| MouseSpeed | Obtiene un valor que indica la velocidad actual del mouse, de 1 a 20. |
| MouseWheelPresent | Obtiene un valor que indica si se instaló la rueda del mouse. |
| MouseWheelScrollDelta | Obtiene la cantidad del valor delta del incremento de una sola rotación de la rueda del mouse. |
| MouseWheelScrollLines | Obtiene el número de líneas de desplazamiento al girar la rueda del mouse. |