Wygląda na to, że Label
nie ma właściwości Hint
lub ToolTip
lub Hovertext
. Jaki jest więc preferowany sposób wyświetlania podpowiedzi, podpowiedzi lub tekstu po najechaniu, gdy mysz podchodzi do myszy Label
?Jak dodać podpowiedź lub etykietkę narzędzia do etykiety w C# Winforms?
Odpowiedz
Najpierw należy dodać formant ToolTip
do formularza. Następnie możesz ustawić tekst, który powinien wyświetlić dla innych elementów sterujących.
Oto zrzut ekranu pokazujący projektanta po dodaniu ToolTip
kontroli, który jest nazwany toolTip1
:
wow, to wydaje się zawiłe/sprzeczne z intuicją, Yuck. –
@ClayShannon W pewnym sensie to jest. Ale projekt jest nieco elegancki. Niektóre elementy sterujące nigdy nie będą żądały wskazówek narzędzi. W ten sposób kontrolka 'ToolTip' może po prostu rejestrować się pod kątem zdarzeń myszy i wyświetlać odpowiedni tekst w zależności od podniesionego zdarzenia. Wszystko dzieje się w tle. – Yuck
Zgadzam się. Pozwala także używać tej samej kontrolki podpowiedzi dla wielu kontrolek. –
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.");
tylko inny sposób to zrobić.
Label lbl = new Label();
new ToolTip().SetToolTip(lbl, "tooltip text here");
Podoba mi się ten pomysł; ale masz na myśli "lbl", a nie "etykietę" w drugiej linii, prawda? –
Tak, dziękuję. Dobrze, sir. – ac0de
Wystarczy udostępnić mój pomysł ...
stworzyłem niestandardowej klasy dziedziczą z klasy Label. Dodałem prywatną zmienną przypisaną jako klasa Tooltip i właściwość publiczną TooltipText. Następnie nadano mu metodę delegowania MouseEnter. Jest to prosty sposób na pracę z wieloma kontrolkami Label i nie musisz się martwić o przypisanie kontroli Tooltip dla każdego kontrolera 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);
}
}
}
W postaci lub metody InitializeComponent kontrolowania ustawień (kod Designer), przypisanie swoją kontrolę Label do niestandardowej klasy:
this.lblMyLabel = new ucLabel();
Również zmienić prywatną zmienną odniesienie w kodzie autora:
private ucLabel lblMyLabel;
Ale czy kod Designer nie jest odnawiany za każdym razem, gdy użytkownik zmienia coś za pomocą projektanta formularzy? – ensisNoctis
Możliwe duplikat [Wyświetlanie etykietkę na najechania myszą tekstu] (http://stackoverflow.com/questions/873175/displaying-tooltip-on-mouse-hover-of-a-text) –