Come posso visualizzare una descrizione comandi su un pulsante utilizzando Windows Form ?
Come posso visualizzare una descrizione comandi su un pulsante utilizzando Windows Form ?
Risposte:
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.
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.
Utilizzando il designer di moduli:
È inoltre possibile impostare la descrizione comandi programmaticamente utilizzando la seguente chiamata:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
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");
}
new ToolTip().SetToolTip(this.Button1, "Hello");
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
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.
.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);
}
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");
}
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");
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);
}