34 votos

Cambiar el cursor del ratón en el icono de la mano

En un UserControl quiero cambiar el cursor del ratón de forma que la flecha de un icono de la mano. Lo que en la actualidad hacer es esto:

this.Cursor = Cursors.Hand;

Esto es muy bonito, me da un cursor de ratón en busca de esta manera:

enter image description here

Pero aquí viene el problema... muestra una mano con un dedo apuntando. No quiero señalar con el dedo, yo quiero un "acaparamiento" de la mano, más como este:

enter image description here

¿Cómo puedo hacer esto? ¿Cómo puedo cargar un archivo de icono (.ico), un archivo de cursor (.cur), o archivo de imagen (.png) y se usa como el puntero del ratón?

16voto

fix_likes_coding Puntos 3586

Si usted tiene un archivo de cursor:

Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;

de lo contrario, usted tiene que crear uno:

algo más de información acerca de los cursores personalizados

2voto

SS 'Kain' Puntos 957

He intentado System.Windows.Forms.Cursor curs = new System.Windows.Forms.Cursor(file_name); ?

0voto

Derek W Puntos 2848

Una advertencia para el uso personalizado de los cursores con el WinForms Cursor de la clase es que cuando se utiliza la secuencia, el nombre de archivo, y de los recursos sobrecargas del constructor al que se suministra .cur archivo debe ser en blanco y negro en color.

Lo que significa que esto no funcionará si el .cur de archivos contiene otros colores además del negro y el blanco.

Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;

Hay una forma de evitar esta limitación utilizando el identificador de Windows sobrecarga del constructor:

Crear el identificador mediante el uso de la API de Windows:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string fileName);

A continuación, pasar a la adecuada Cursor constructor como este:

IntPtr handle = LoadCursorFromFile("myCursor.cur");
Cursor myCursor = new Cursor(handle);
myControl.Cursor = myCursor;

Espero que esto evita que otros rascándose la cabeza a un ArgumentException ser lanzado indicando: Image format is not valid. The image file may be corrupted. cuando se utiliza la otra Cursor sobrecargas del constructor con un .cur archivo que contiene el color.

0voto

nult2003 Puntos 1

He probado este método. Es ACEPTAR. Este es mi aplican:

    [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;
    }

-3voto

user4000577 Puntos 1

este.Cursor = Cursores.De la mano;

Yo uso esta simple línea de código y se hace el truco para mí. Pero estoy usando VS ultimate 2012 .net 3.5.1

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: