Necesito ayuda sobre cómo ocultar el cursor cuando el ratón está sobre una de mis formas de aplicación. Sé que el código del Cursor.Hide() y el Cursor.Show() para el MouseEnter y MouseLeave eventos respectivamente. Aplicando esto a la forma en sí no funciona. Así que he insertado un panel (conjunto de su propiedad Dock para Rellenar) para contener otros controles. El código funcionó para el panel, pero cuando empecé a añadir controles, no.

Mi conjetura es que me tengo que aplicar el código a cada control. Con cerca de 25 controles en el formulario, que parece bastante torpe.

Mi idea era esta (lo siento por el formato; estoy escribiendo esto desde un dumbphone):

foreach(Control control in this.Controls)
{
    control.MouseEnter += control_MouseEnter;
    control.MouseLeave += control_MouseLeave;
}

El código estaba dentro de FrmScreen_Load. Pero aún así no funciona. Me estoy perdiendo algo?

Estoy trabajando en C#, pero las soluciones en VB.NET son aceptables.

  • ¿Qué quieres decir con que todavía no funciona » es el bucle no se ejecuta o es el código que se utiliza para mostrar y ocultar el cursor no funciona
  • También puede crear vacíos archivo de cursor con las teclas cursor editor y utilizar como la forma de la propiedad Cursor – this.Cursor = new Cursor("path to empty cursor file here");
  • Creo que el problema es que en el bucle, cuando el ratón está sobre un control, control_MouseEnter (que oculta el cursor) se llama, pero momentáneamente antes de que, el ratón ha dejado otro control que muestra el cursor. En todo, tal vez los dos eventos son llamados de forma simultánea, de modo que parece que el cursor se muestra siempre. Justo lo que yo pienso
  • Asistente pensé que. Me decidí a hacerlo como último recurso, si no hay una mejor solución
  • posibles duplicados de WinForms cursor oculto en un sólo Formulario
  • Estás en lo correcto. Acabo de descubrir que ayer, también. Yo estaba escribiendo en la versión móvil, así que no hubo ninguna sugerencia desplegable. Gracias

InformationsquelleAutor afaolek | 2012-08-20

2 Comentarios

  1. 5

    Se sugiere utilizar Cursor.Hide(); en el constructor del formulario.

    Aplicando esto a la forma en sí no funciona

    No creo que nunca voy a tener cuidado acerca de cursor cuando se mueve fuera de la Aplicación del territorio.El momento en que el formulario se inicializa poner el código.

    public Form1()
            {    
                InitializeComponent();
                Cursor.Hide();
            }

    Uno más recomendable es recorrer el control de la colección es decir,

    foreach(Control c in this.Controls)
    {
      c.Cursor.Hide();
    }
    • En realidad, yo voy a mostrar dos formas a la vez en mi aplicación. Configuración ~Cursor.Hide()~ en el constructor oculta el cursor en la otra forma, también.
    • ¿qué acerca de la configuración del cursor.mostrar en el otro formulario. Quizás esto.cursor.show() debe trabajar en form2.
  2. 0

    Usted dijo esto: @msarchet creo que el problema es que en el bucle, cuando el ratón está sobre un control, control_MouseEnter (que oculta el cursor) se llama, pero momentáneamente antes de que, el ratón ha dejado otro control que muestra el cursor. En todo, tal vez los dos eventos son llamados de forma simultánea, de modo que parece que el cursor se muestra siempre. Justo lo que yo creo que

    Si usted piensa que es el problema, no en un cursor.show para salir de todos los controles, sólo quieren mostrar al salir del panel. Establecer un cursor.show y un cursor.ocultar en el panel y todos los demás controles acaba de obtener un cursor.ocultar.

    • Si usted lee la pregunta muy bien, ese fue mi primer intento. Sólo funciona cuando no hay controles en el panel (que es inútil).
    • Creo que usted necesita para volver a leer lo que he dicho. Usted nunca se menciona sólo poner el cursor.ocultar en todos los controles y ambos cursor.ocultar y cursor.mostrar sólo en el panel. Usted dijo que se trató de poner tanto en el panel y, a continuación, trató de poner ambos en todos los controles. Yo no estoy diciendo que sea uno de esos. Estoy diciendo poner el cursor.ocultar y cursor.mostrar los eventos en el panel y sólo poner el cursor.ocultar los eventos en los otros controles.
    • Llego ahora. Pero desde la página de MSDN (lo siento, no tengo el enlace ahora) en el Cursor.Hide(), hay una justa advertencia de que no debe haber un correspondientes Cursor.Show(). Yo creo que tienen razón, porque a veces, el cursor no se esconden, mientras que otras veces no lo hace.
    • OK, era solo un pensamiento. El panel del cursor.show debe ser capaz de manejarlo.

Dejar respuesta

Please enter your comment!
Please enter your name here