2011-11-22 15 views
11

Ho un tooltip che vengono visualizzati sul passaggio del mouse su un'immagine:C# tooltip non visualizza abbastanza a lungo

ToolTip tt = new ToolTip(); 
protected virtual void pictureBox_MouseHover(object sender, EventArgs e) 
{ 
    tt.InitialDelay = 0; 
    tt.SetToolTip(this.pictureBox, "Click 'LIVE ..."); 
} 

mio problema è che il mio testo è piuttosto lunga, e il tooltip scompare troppo veloce. Come posso visualizzare più a lungo la descrizione?

risposta

16

Impostare il AutoPopDelay property di essere qualcosa di più alto - il valore predefinito è 5000 (5 secondi)

Aggiornamento: Il mio errore:

Il tempo massimo è possibile ritardare un popup è 5000 millisecondi . Per durate più lunghe, utilizzare il metodo Show per controllare il momento esatto in cui viene visualizzata la descrizione.

Quindi non è possibile visualizzare la descrizione dell'utensile per più di 5 secondi utilizzando questo metodo, ma è necessario utilizzare la visualizzazione per mostrare esplicitamente la descrizione quando l'utente si posiziona sulla casella immagine. Basta sostituire la chiamata a SetToolTip con uno a Show nel gestore MouseHover eventi:

ToolTip tt = new ToolTip(); 
protected virtual void pictureBox_MouseHover(object sender, EventArgs e) 
{ 
    tt.Show("Click 'LIVE ...", this.pictureBox, 10000); 
} 
+0

Pensato allo stesso. O semplicemente per provare a impostare 'ShowAlways' su' true' come soluzione alternativa. –

+0

+1 buona risposta diretta e per elencare quale sia il valore predefinito. – aevanko

+9

@Justin - Si scopre che, nonostante la documentazione, non c'è nulla che ti impedisca di impostare un ritardo più lungo, e funziona. L'ho impostato su 20.000 millisecondi e è rimasto in piedi a lungo. [Utilizzo di .NET 3.5] Un utente StackOverflow chiamato "Panny" ha rilevato che il ritardo massimo che è possibile impostare è 32.767 millisecondi, dovuto a problemi int con firma a 16 bit e così via. – ManEatingCheese

2

impostare il valore della proprietà AutoPopDelay

tt.AutoPopDelay = 10000; 
2

ToolTip.Show(text, [control], time in milliseconds) è what you need penso

Questo vi permetterà di visualizzare il tuo lungo testo per un numero specifico di millisecondi. Inoltre, se il testo è troppo lungo, è possibile inserire NewLine tra il testo in modo che sia racchiuso e non mostrato come una descrizione lunga lungo il modulo

2

A differenza della risposta descritta da Justin, non sono riuscito a ottenere il Descrizione per visualizzare più a lungo dei 5 secondi utilizzando il metodo show.

Uno degli altri hangup che stavo avendo era la proprietà AutomaticDelay. Per farla breve, se si desidera personalizzare AutoPopDelay fare non impostare AutomaticDelay.

impostazione di questa proprietà sarà automaticamente set ... see MSDN:

AutoPopDelay = 10 x AutomaticDelay

InitialDelay = AutomaticDelay

ReshowDelay = (0.2) x AutomaticDelay

Ecco il codice che ha funzionato per me:

ToolTip tt = new ToolTip(); 
private void someObjectName_MouseHover(object sender, EventArgs e) { 
    tt = new ToolTip 
    { 
     AutoPopDelay = 15000, // Warning! MSDN states this is Int32, but anything over 32767 will fail. 
     ShowAlways = true, 
     ToolTipTitle = "Symbolic Name", 
     InitialDelay = 200, 
     ReshowDelay = 200, 
     UseAnimation = true 
    }; 
    tt.SetToolTip(this.someObjectName, "This is a long message"); 
} 

Bonus:

private void someObjectName_MouseLeave(object sender, EventArgs e) 
    { 
     tt.Active = false; 
    } 
Problemi correlati