Administración de punteros del mouse (Windows Forms para .NET)

El puntero del mouse, que a veces se denomina cursor, es un mapa de bits que especifica un punto de enfoque en la pantalla para la entrada de usuario con el mouse. En este tema se ofrece información general sobre el puntero del mouse en Windows Forms y se describen algunas de las formas de modificar y controlar el puntero del mouse.

Importante

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

Acceso al puntero del mouse

El puntero del mouse se representa mediante la clase Cursor, y cada Control tiene una propiedad Control.Cursor que especifica el puntero para ese control. La clase Cursor contiene propiedades que describen el puntero, como las propiedades Position y HotSpot, y métodos que pueden modificar la apariencia del puntero, como los métodos Show, Hide y DrawStretched.

En el ejemplo siguiente se oculta el cursor cuando el cursor está encima de un botón:

private void button1_MouseEnter(object sender, EventArgs e) =>
    Cursor.Hide();

private void button1_MouseLeave(object sender, EventArgs e) =>
    Cursor.Show();
Private Sub Button1_MouseEnter(sender As Object, e As EventArgs) Handles Button1.MouseEnter
    Cursor.Hide()
End Sub

Private Sub Button1_MouseLeave(sender As Object, e As EventArgs) Handles Button1.MouseLeave
    Cursor.Show()
End Sub

Control del puntero del mouse

Es posible que a veces quiera limitar el área en la que se puede usar el puntero del mouse o cambiar la posición del mouse. Puede obtener o establecer la ubicación actual del mouse mediante la propiedad Position de Cursor. Además, puede limitar el área en la que se puede usar el puntero del mouse estableciendo la propiedad Clip. De forma predeterminada, el área de recorte es toda la pantalla.

En el ejemplo siguiente se coloca el puntero del mouse entre dos botones cuando se hace clic en ellos:

private void button1_Click(object sender, EventArgs e) =>
    Cursor.Position = PointToScreen(button2.Location);

private void button2_Click(object sender, EventArgs e) =>
    Cursor.Position = PointToScreen(button1.Location);
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    PointToScreen(Button2.Location)
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    PointToScreen(Button1.Location)
End Sub

Cambio del puntero del mouse

Cambiar el puntero del mouse es una forma importante de proporcionar comentarios al usuario. Por ejemplo, el puntero del mouse se puede modificar en los controladores de los eventos MouseEnter y MouseLeave para indicar al usuario que se están produciendo cálculos y limitar la interacción del usuario en el control. A veces, el puntero del mouse cambiará debido a eventos del sistema, como cuando la aplicación está implicada en una operación de arrastrar y colocar.

La forma principal de cambiar el puntero del mouse es establecer la propiedad Control.Cursor o DefaultCursor de un control en una nueva Cursor. Para ver ejemplos de cambio del puntero del mouse, consulte el ejemplo de código de la clase Cursor. Además, la clase Cursors expone un conjunto de objetos Cursor para muchos tipos distintos de punteros, como uno que se parece a una mano.

En el ejemplo siguiente se cambia el cursor del puntero del mouse para un botón a una mano:

button2.Cursor = System.Windows.Forms.Cursors.Hand;
Button2.Cursor = System.Windows.Forms.Cursors.Hand

Para mostrar el puntero de espera, que es similar a un reloj de arena, siempre que el puntero del mouse esté en el control, use la propiedad UseWaitCursor de la clase Control.

Vea también