2009-07-06 13 views
9

Per soddisfare un requisito, devo mostrare manualmente un suggerimento per 30 secondi. Secondo msdn devo solo usare il metodo "Show".C# Tooltip non visualizzato su "Mostra"

toolTip.Show(QuestionHelpText, btnHelp, 30000); 

Ma ho solo il comportamento tooltip di serie, il che significa che il messaggio appare mezzo secondo dopo il mio clic (solo perché il puntatore del mouse è ancora sopra il pulsante). Ho provato alcune variazioni come

toolTip.Show(QuestionHelpText, btnHelp); 

ma ancora, non succede nulla.

Qualcuno ha un'idea del motivo?

Grazie

risposta

12

so una semplice soluzione

mettere un'etichetta (Diamo il nome labelHelp) con testo vuoto vicino al pulsante

Il seguente codice dovrebbe funzionare

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

perché funziona sull'etichetta, ma non sul pulsante? – lostiniceland

+6

funzionerà per qualsiasi controllo. Rob ha detto correttamente che toolTip.Show è un metodo di blocco. quindi, quando viene utilizzato all'interno di un gestore di eventi (cioè all'interno di btnHelp_Click) dello stesso controllo, non funzionerà come previsto. il trucco è chiamare toolTip.Show per un controllo diverso. L'altra soluzione alternativa potrebbe essere quella di avere un timer e avviare toolTip.Show asyncroneosuly (ad esempio in btnHelp_Click si avvia il timer per 0.1 secondi, quindi si chiama toolTip.Show in un evento timer). Utilizzare il 2 ° controllo sembra una soluzione più semplice per me. –

+0

grazie. ora questo è chiaro – lostiniceland

2

Dove viene dichiarato "toolTip"?

MSDN non indica (su ToolTip.Show Method documentation) che il metodo Show è una chiamata di blocco, quindi se stai dichiarando toolTip in un metodo e poi praticamente subito dopo l'uscita dal metodo, toolTip non sarà più disponibile , facendolo non renderizzare o sparire.

+0

Il tooltip è utilizzato sull'usercontrol, quindi dichiarato all'interno di Initiali zeComponent – lostiniceland

0

Penso che è necessario per impostare la proprietà initialDelay del tool tip