2009-07-06 14 views
9

Para cumplir con un requisito, tengo que mostrar una información sobre herramientas de forma manual durante 30 segundos. De acuerdo con msdn solo tengo que usar el método "Mostrar".C# Tooltip no aparece en "Mostrar"

toolTip.Show(QuestionHelpText, btnHelp, 30000); 

Pero solo me dan el comportamiento sobre herramientas estándar, lo que significa que el mensaje aparece de medio segundo después de mi clic (sólo porque el puntero del ratón está todavía por encima del botón). Probé algunas variaciones como

toolTip.Show(QuestionHelpText, btnHelp); 

pero aún así, no pasa nada.

¿Alguien tiene una idea de por qué es así?

Gracias

Respuesta

12

sé una solución simple

Deja un lable (Dejar el nombre que labelHelp) con el texto vacío cerca de su botón de

El siguiente código debería funcionar

private void btnHelp_Click(object sender, EventArgs e) 
    { 
     toolTip.Show(QuestionHelpText, labelHelp, 3000); 
    } 
+0

¿por qué funciona en la etiqueta, pero no en el botón? – lostiniceland

+6

funcionará para cualquier control. Rob dijo que corregir ese toolTip.Show es un método de bloqueo. por lo tanto, cuando se utiliza dentro de un controlador de eventos (es decir, dentro de btnHelp_Click) del mismo control, no funcionará como se esperaba. el truco es llamar a toolTip.Show para un control diferente. La otra solución alternativa podría ser tener un temporizador e iniciar toolTip.Show asyncroneosuly (por ejemplo, en btnHelp_Click, inicie el temporizador durante 0.1 segundos, y luego llame a toolTip.Show en un evento de temporizador). Usar 2nd Control parece una solución más fácil para mí. –

+0

gracias. ahora esto está claro – lostiniceland

2

¿Dónde se dice "toolTip"?

MSDN no indica (en el ToolTip.Show Method documentation) que el método Show es una llamada de bloqueo, por lo que si declara toolTip en un método y luego sale del método, toolTip quedará fuera del alcance , haciendo que no se renderice o desaparezca.

+0

La información sobre herramientas se utiliza en el control de usuario, por lo que se declara en Initiali zeComponent – lostiniceland

0

creo que es necesario para establecer la propiedad initialDelay de la información sobre herramientas