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 los eventos del mouse para realizar una acción en la aplicación o usar información de ubicación del mouse para realizar pruebas de posicionamiento 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 los eventos del mouse en detalle y cómo obtener y cambiar la configuración del sistema correspondiente al mouse. Para obtener más información sobre los datos proporcionados con los eventos del mouse y el orden en el que se generan los eventos de clic del mouse, consulte Eventos del mouse en Windows Forms.

Ubicación del mouse y pruebas de posicionamiento

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 posicionamiento y luego 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 del mouse adecuado, MouseHover por ejemplo, las pruebas de posicionamiento son muy útil para determinar cuándo debe realizarse una acción específica en la aplicación.

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

Cambio de la entrada del mouse y detección de la configuración del sistema

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 SetStyle toma una combinación bit a bit de los valores de ControlStyles para determinar si el control tendrá un comportamiento estándar de clic o de doble clic, o si el control controlará su propio procesamiento del mouse. Además, la clase SystemInformation incluye propiedades que describen la funcionalidad del mouse y especifican cómo interactúa el 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 pasar entre un primer clic y un segundo clic para que el sistema operativo considere que la acción del mouse es 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.

Vea también