Visualizza una descrizione comandi su un pulsante utilizzando Windows Form


Risposte:


222

La descrizione comandi è in realtà un controllo WinForms che gestisce la visualizzazione di suggerimenti per più elementi in un singolo modulo.

Supponiamo che il tuo pulsante si chiami MyButton.

  1. Aggiungere un controllo descrizione comandi (in Controlli comuni nella casella degli strumenti di Windows Form) al modulo.
  2. Dagli un nome - dì MyToolTip
  3. Impostare la proprietà "Descrizione comando su MyToolTip" di MyButton (sotto Varie nella griglia delle proprietà del pulsante) sul testo che dovrebbe apparire quando ci si passa sopra con il mouse.

La descrizione comandi apparirà automaticamente quando il cursore passa sopra il pulsante, ma se è necessario visualizzarlo a livello di codice, chiamare

MyToolTip.Show("Tooltip text goes here", MyButton)

nel codice per mostrare la descrizione comandi e MyToolTip.Hide (MyButton) per farlo scomparire di nuovo.


bello, ma una domanda: se ho più di un pulsante in un modulo, ho bisogno di più tooltip o posso impostare più descrizioni e pulsanti per lo stesso tooltip?
ghiboz,

8
Il tuo modulo necessita solo di un singolo controllo ToolTip - ogni pulsante può avere un testo di aiuto diverso (questo è il motivo per cui "Tooltip su MyToolTip" è una proprietà del controllo associato, non del controllo ToolTip stesso)
Dylan Beattie

2
Nel caso più semplice, aggiungere la descrizione comandi al modulo è la cosa migliore da fare. Problema: in fase di progettazione di un controllo personalizzato non si fa riferimento al modulo principale. Soluzione: creare un oggetto tooltip nel controllo. Non pensare all'oggetto ToolTip come necessariamente collegato al modulo.
Stéphane Gourichon,

93

Utilizzando il designer di moduli:

  • Trascinare il controllo descrizione comandi dalla casella degli strumenti, sul modulo.
  • Selezionare le proprietà del controllo su cui si desidera visualizzare la descrizione comandi.
  • Trova la proprietà 'ToolTip on toolTip1' (il nome potrebbe non essere toolTip1 se hai cambiato il nome predefinito).
  • Impostare il testo della proprietà sul testo della descrizione comandi che si desidera visualizzare.

È inoltre possibile impostare la descrizione comandi programmaticamente utilizzando la seguente chiamata:

this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");

45

Puoi usare la classe ToolTip:

Creazione di una descrizione comando per un controllo

Esempio:

private void Form1_Load(object sender, System.EventArgs e)
{
    System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
    ToolTip1.SetToolTip(this.Button1, "Hello");
}

1
Questa è la soluzione perfetta in quanto si integra direttamente con il codice VS generato automaticamente. Grazie :)
anon58192932

@DaveK Grazie. È meglio così perché posso definire tutte le descrizioni comandi in un unico posto
fedeteka,

Grazie. La risposta migliore e più semplice a questa domanda.
Najeeb,

Ancora più breve:new ToolTip().SetToolTip(this.Button1, "Hello");
The_Black_Smurf

6

Per il tooltip predefinito questo può essere usato -

System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");

Una descrizione comandi personalizzata può essere utilizzata anche nel caso in cui sia richiesta la formattazione per il messaggio descrizione comandi. Questo può essere creato formattando in modo personalizzato il modulo e utilizzandolo come finestra di dialogo della descrizione comandi sull'evento al passaggio del mouse del controllo. Si prega di controllare il seguente link per maggiori dettagli -

http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html


5

Memorizzazione del testo pigra e compatta nella proprietà Tag

Se sei un po 'pigro e non usare proprietà Tag dei controlli per qualcos'altro, puoi usarlo per memorizzare il testo della descrizione comandi e assegnare i gestori di eventi MouseHover a tutti questi controlli in un unico modo:

    private System.Windows.Forms.ToolTip ToolTip1;
    private void PrepareTooltips()
    {
        ToolTip1 = new System.Windows.Forms.ToolTip();
        foreach(Control ctrl in this.Controls)
        {
            if (ctrl is Button && ctrl.Tag is string)
            {
                ctrl.MouseHover += new EventHandler(delegate(Object o, EventArgs a)
                {
                    var btn = (Control)o;
                    ToolTip1.SetToolTip(btn, btn.Tag.ToString());
                });
            }
        }
    }

In questo caso a tutti i pulsanti con una stringa nella proprietà Tag viene assegnato un evento MouseHover . Per mantenerlo compatto, l' evento MouseHover è definito in linea usando un'espressione lambda. Nel caso in cui un pulsante premuto abbia il suo Tag testo del assegnato alla descrizione comando e mostrato.


4

.NET framework fornisce una classe ToolTip. Aggiungi uno di questi al tuo modulo e quindi all'evento MouseHover per ogni elemento per cui desideri una descrizione comandi, fai qualcosa del tipo:

    private void checkBox1_MouseHover(object sender, EventArgs e)
    {
        toolTip1.Show("text", checkBox1);
    }

4
private void Form1_Load(object sender, System.EventArgs e)
{
    ToolTip toolTip1 = new ToolTip();
    toolTip1.AutoPopDelay = 5000;
    toolTip1.InitialDelay = 1000;
    toolTip1.ReshowDelay = 500;
    toolTip1.ShowAlways = true;
    toolTip1.SetToolTip(this.button1, "My button1");
    toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}

4
Sebbene questo frammento di codice possa risolvere la domanda, inclusa una spiegazione aiuta davvero a migliorare la qualità del tuo post. Ricorda che in futuro stai rispondendo alla domanda dei lettori e che queste persone potrebbero non conoscere i motivi del tuo suggerimento sul codice.
secelite

0

Sulla base della risposta di DaveK , ho creato un'estensione di controllo:

public static void SetToolTip(this Control control, string txt)
{
    new ToolTip().SetToolTip(control, txt);
}

Quindi puoi impostare la descrizione comando per qualsiasi controllo con una sola riga:

this.MyButton.SetToolTip("Hello world");

-4

Certo, basta gestire l'evento mousehover e dirgli di visualizzare un suggerimento. t è una descrizione comandi definita nei globali o nel costruttore usando:

ToolTip t = new ToolTip();

quindi il gestore dell'evento:

private void control_MouseHover(object sender, EventArgs e)
{
  t.Show("Text", (Control)sender);
}

2
Penso che tu sia stato votato verso il basso perché non è questo il modo di usare i comandi della descrizione comandi in Windows Form. È necessario solo uno di questi controlli nel modulo e mostra i suggerimenti per tutti i controlli. Vedi il codice nelle altre risposte.
Julian Melville,

1
Immagino che la spiegazione non corrisponda al codice, dove nella spiegazione che ho detto lo visualizzi e anche nel codice l'ho inizializzato. Colpa mia. : P
Friggi il

2
@Julianz In realtà, questo funziona bene per avere tooltip specializzati che possono essere dinamici se vuoi a seconda dello stato (meno ovviamente la creazione - perdonami, stavo solo cercando di inserire tutto in un blocco.) Come per altre risposte su un vena simile ... yshuditelu e Dylan Beattie erano simili anche se senza l'istanza.
Friggi il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.