2009-08-27 20 views
130

Ho alcuni controlli che mi piacerebbe visualizzare uno ToolTip per quando il mouse si passa sopra di esso. Come posso fare questo? Mi piacerebbe sapere come farlo correttamente nel codice, ma anche nella finestra di progettazione (C'è un componente ToolTip nella casella degli strumenti, ma non lo faccio abbastanza ... capisco).C#: Come aggiungo una descrizione per un controllo?

Non sarei sorpreso se questo è un duplicato, ma posso solo trovare domande che si trovano su scenari più avanzati e specifici. Mi piacerebbe sapere le basi.

+0

Eventuali duplicati di [Visualizzazione tooltip al passaggio del mouse presso un testo] (http://stackoverflow.com/questions/873175/displaying-tooltip-on-mouse-hover-of-a -text) –

+0

Correlati, e meno recenti (si applica a .NET in generale): https://stackoverflow.com/questions/168550/display-a-tooltip-over-a-button-using-windows-forms –

risposta

168

Here è il vostro articolo per farlo con il codice

private void Form1_Load(object sender, System.EventArgs e) 
{ 
     // Create the ToolTip and associate with the Form container. 
     ToolTip toolTip1 = new ToolTip(); 

     // Set up the delays for the ToolTip. 
     toolTip1.AutoPopDelay = 5000; 
     toolTip1.InitialDelay = 1000; 
     toolTip1.ReshowDelay = 500; 
     // Force the ToolTip text to be displayed whether or not the form is active. 
     toolTip1.ShowAlways = true; 

     // Set up the ToolTip text for the Button and Checkbox. 
     toolTip1.SetToolTip(this.button1, "My button1"); 
     toolTip1.SetToolTip(this.checkBox1, "My checkBox1"); 
} 
+3

So I Immagino che non importa se la variabile 'toolTip1' non rientra nello scope? – Svish

+0

Beh, importa.È meglio renderlo membro della classe, se vuoi gestirlo da qualche altra funzione .. –

+1

Che ne dici di una 'ToolTip' statica per tutte le tue forme? – Svish

111

Trascinare un controllo tooltip dalla casella degli strumenti nel form. Non hai davvero bisogno di dargli altre proprietà oltre al nome. Quindi, nelle proprietà del controllo su cui desideri avere un suggerimento, cerca una nuova proprietà con il nome del controllo tooltip appena aggiunto. Di default ti darà un suggerimento quando il cursore alza il controllo.

+1

Questa è una risposta molto bella. La semplicità è la chiave. –

+36

Assicurarsi che quando si esegue questa operazione (come alle 2:00) di utilizzare un controllo ToolTip e non un controllo ToolStrip. –

+1

Con questa risposta, l'aggiunta di un solo suggerimento alla winform fornisce a tutti i controlli nella forma il proprio suggerimento. – SAm

34
  1. Aggiungere un componente ToolTip al modulo
  2. Seleziona uno dei controlli che si desidera un suggerimento per
  3. Aprire la griglia delle proprietà (F4), nella lista si trova una proprietà chiamata "ToolTip on toolTip1" (o qualcosa di simile). Imposta il testo del suggerimento desiderato su quella proprietà.
  4. Ripetere 2-3 per gli altri comandi
  5. Fine.

Il trucco è che il controllo descrizione comandi è un controllo extender, il che significa che estenderà l'insieme di proprietà per altri controlli della maschera. Dietro le quinte questo si ottiene generando codice come nella risposta di Svetlozar. Esistono altri controlli che funzionano allo stesso modo (come lo HelpProvider).

+1

Quindi è possibile utilizzare la stessa descrizione per molti controlli con testi diversi? – Svish

+0

@Svish: sì, questo è lo scopo dei controlli di estensione. –

+0

Può essere utilizzato anche per crossercontrols e moduli? Ad esempio se hai creato una descrizione comandi statica con i tuoi valori di proprietà standard. O sarebbe considerata una cattiva pratica? – Svish

-2

Basta sottoscrivere l'evento ToolTipTextNeeded del controllo e restituire e.TooltipText, molto più semplice.

+4

Non penso che sia un evento di controllo WinForm standard. – Dan7

5

ToolTip in C# è molto facile da aggiungere a quasi tutti i controlli dell'interfaccia utente. Non è necessario aggiungere alcun evento MouseHover per questo.

Questo è come fare it-

  1. aggiungere un oggetto ToolTip al form. Un oggetto è sufficiente per l'intera forma. ToolTip toolTip = new ToolTip();

  2. Aggiungere il controllo al suggerimento con il testo desiderato.

    toolTip.SetToolTip(Button1,"Click here");

Problemi correlati