tipo - cambiar el puntero del mouse en c#
¿Cómo cambiar el cursor del mouse a uno personalizado cuando se trabaja con aplicaciones de Windows Forms? (4)
¿Has probado System.Windows.Forms.Cursor curs = new System.Windows.Forms.Cursor(file_name);
?
En un UserControl
, quiero cambiar el cursor del mouse de la flecha a un ícono de mano.
Lo que hago actualmente es esto:
this.Cursor = Cursors.Hand;
Esto es muy lindo, me da un cursor de mouse que se ve así:
Pero aquí viene mi problema ... esto muestra una mano con un dedo señalador.
Lo que necesito es una mano "agarradora", más como esta:
¿Cómo hago esto? ¿Cómo puedo cargar un archivo de icono (.ico), un archivo de cursor (.cur) o un archivo de imagen (.png) y utilizarlo como el cursor del mouse?
Probé este método. Está bien. Esta es mi solicitud:
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string fileName);
Cursor myCursor;
private void tsbtn_ZoomIn_Click(object sender, EventArgs e)
{
IntPtr handle = LoadCursorFromFile("view_zoom_in.cur");
myCursor = new Cursor(handle);
zg1.Cursor = myCursor;
}
Si tienes un archivo de cursor:
Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;
de lo contrario, debes crear uno:
algo más de información sobre switchonthecode.com/tutorials/…
Una advertencia al uso de cursores personalizados con la clase Cursor
WinForms es que cuando se utiliza la secuencia, nombre de archivo y sobrecarga del constructor de recursos, el archivo .cur
suministrado debe ser de color blanco y negro .
Lo que significa que esto no funcionará si los archivos .cur
contienen colores además de blanco y negro.
Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;
Hay una forma de evitar esta limitación mediante el uso de la sobrecarga del constructor de identificador de Windows:
Cree el identificador utilizando la API de Windows:
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string fileName);
Luego páselo al constructor de Cursor
apropiado de esta manera:
IntPtr handle = LoadCursorFromFile("myCursor.cur");
Cursor myCursor = new Cursor(handle);
myControl.Cursor = myCursor;
Espero que esto evite que otros se rasquen la cabeza a una ArgumentException
lanzada indicando: El Image format is not valid. The image file may be corrupted.
Image format is not valid. The image file may be corrupted.
cuando se usan las otras sobrecargas del constructor de Cursor
con un archivo .cur
que contiene color.