Información general sobre el uso del mouse (Windows Forms para .NET)

Recibir y controlar la entrada del mouse es una parte importante de toda aplicación de Windows. Puede controlar los eventos del mouse para llevar a cabo 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 artículo se describen los eventos del mouse en detalle y cómo obtener y cambiar la configuración del sistema correspondiente al mouse.

Importante

La documentación de la guía de escritorio para .NET 7 y .NET 6 está en proceso de elaboración.

En Windows Forms, las entradas de usuario se envían a las aplicaciones en forma de mensajes de Windows. Una serie de métodos reemplazables procesa estos mensajes en el nivel de aplicación, formulario y control. Cuando estos métodos reciben mensajes del mouse, generan eventos que se pueden controlar para obtener información sobre la entrada del mouse. En muchos casos, las aplicaciones de Windows Forms pueden procesar todas las entradas de usuario controlando estos eventos. En otros casos, es posible que una aplicación reemplace uno de los métodos que procesan los mensajes para interceptar un mensaje determinado antes de que lo reciba la aplicación, el formulario o el control.

Eventos del mouse

Todos los controles de Windows Forms heredan un conjunto de eventos relacionados con la entrada de mouse y de teclado. Por ejemplo, un control puede controlar el evento MouseClick para determinar la ubicación de un clic del mouse. Para más información sobre los eventos del mouse, consulte Uso de eventos del mouse.

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. Después, 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.

Cambio de la configuración de entrada del mouse

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 la acción del mouse se considere 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.

Métodos que procesan los mensajes de entrada de usuario

Los formularios y controles tienen acceso a la interfaz de IMessageFilter y a un conjunto de métodos reemplazables que procesan los mensajes de Windows en distintos puntos de la cola de mensajes. Todos estos métodos tienen un parámetro Message, que encapsula los detalles de bajo nivel de los mensajes de Windows. Puede implementar o reemplazar estos métodos para examinar el mensaje y luego consumirlo o pasarlo al siguiente consumidor en la cola de mensajes. En la tabla siguiente se presentan los métodos que procesan todos los mensajes de Windows en Windows Forms.

Método Notas
PreFilterMessage Este método intercepta los mensajes de Windows en cola (también conocidos como publicados) en el nivel de aplicación.
PreProcessMessage Este método intercepta los mensajes de Windows en el nivel de formulario y de control antes de que se hayan procesado.
WndProc Este método procesa los mensajes de Windows en el nivel de formulario y de control.
DefWndProc Este método realiza el procesamiento predeterminado de los mensajes de Windows en el nivel de formulario y de control. Esto proporciona la funcionalidad mínima de una ventana.
OnNotifyMessage Este método intercepta los mensajes en el nivel de formulario y de control una vez que se han procesado. Hay que establecer el bit de estilo EnableNotifyMessage para que se llame a este método.

Vea también