Sembra che lo Label
non abbia Hint
o ToolTip
o Hovertext
proprietà. Quindi qual è il metodo preferito per mostrare un suggerimento, un suggerimento o un testo al passaggio del mouse quando si avvicina il Label
al mouse?Come posso aggiungere un suggerimento o suggerimento a un'etichetta in C# Winforms?
risposta
Devi prima aggiungere un controllo ToolTip
al modulo. Quindi puoi impostare il testo che dovrebbe essere visualizzato per gli altri controlli.
Ecco uno screenshot che mostra il designer dopo l'aggiunta di un controllo ToolTip
che prende il nome toolTip1
:
Wow, sembra contorto/controintuitivo, Yuck. –
@ClayShannon In un certo senso, suppongo che lo sia. Ma il design è in qualche modo elegante. Alcuni controlli non vorrebbero mai suggerimenti sugli strumenti. In questo modo, il controllo 'ToolTip' può registrarsi per gli eventi mouse over e visualizzare il testo corretto in base all'evento generato. Questo succede tutto in background. – Yuck
Sono d'accordo. Permette anche di usare lo stesso controllo tooltip per più controlli. –
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(Label1, "Label for Label1");
yourToolTip = new ToolTip();
//The below are optional, of course,
yourToolTip.ToolTipIcon = ToolTipIcon.Info;
yourToolTip.IsBalloon = true;
yourToolTip.ShowAlways = true;
yourToolTip.SetToolTip(lblYourLabel,"Oooh, you put your mouse over me.");
solo un altro modo per farlo.
Label lbl = new Label();
new ToolTip().SetToolTip(lbl, "tooltip text here");
Mi piace questa idea; ma intendi "lbl" non "etichetta" sulla seconda riga, giusto? –
Sì, grazie. Buon occhio, signore. – ac0de
solo per condividere la mia idea ...
ho creato una classe personalizzata per ereditare la classe Label. Ho aggiunto una variabile privata assegnata come classe Tooltip e una proprietà pubblica, TooltipText. Quindi, gli ha dato un metodo delegato MouseEnter. Questo è un modo semplice per lavorare con più controlli Label e non doversi preoccupare di assegnare il controllo Tooltip per ogni controllo Label.
public partial class ucLabel : Label
{
private ToolTip _tt = new ToolTip();
public string TooltipText { get; set; }
public ucLabel() : base() {
_tt.AutoPopDelay = 1500;
_tt.InitialDelay = 400;
// _tt.IsBalloon = true;
_tt.UseAnimation = true;
_tt.UseFading = true;
_tt.Active = true;
this.MouseEnter += new EventHandler(this.ucLabel_MouseEnter);
}
private void ucLabel_MouseEnter(object sender, EventArgs ea)
{
if (!string.IsNullOrEmpty(this.TooltipText))
{
_tt.SetToolTip(this, this.TooltipText);
_tt.Show(this.TooltipText, this.Parent);
}
}
}
Nella forma o metodo InitializeComponent di controllo dell'utente (il codice Designer), riassegnare il vostro controllo Label alla classe personalizzata:
this.lblMyLabel = new ucLabel();
Inoltre, modificare il riferimento variabile privata nel codice Designer:
private ucLabel lblMyLabel;
Ma il codice Designer non viene rigenerato ogni volta che l'utente cambia qualcosa utilizzando Form visual designer? – ensisNoctis
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) –