Wie kann ich einem Label in C # Winforms einen Hinweis oder Tooltip hinzufügen?
81
Es scheint, dass der Labelkein Hintoder ToolTipoder HovertextEigentum hat. Was ist die bevorzugte Methode, um einen Hinweis, einen Tooltip oder einen Hover-Text anzuzeigen, wenn Sie Labelmit der Maus darauf zugreifen?
Sie müssen ToolTipIhrem Formular zuerst ein Steuerelement hinzufügen . Anschließend können Sie den Text festlegen, der für andere Steuerelemente angezeigt werden soll.
Hier ist ein Screenshot, der den Designer nach dem Hinzufügen eines ToolTipSteuerelements mit dem Namen zeigt toolTip1:
Wow, das scheint verworren / eingängig zu sein, Yuck.
B. Clay Shannon
@ ClayShannon In gewisser Weise ist es wohl so. Aber das Design ist etwas elegant. Einige Steuerelemente möchten niemals QuickInfos. Auf diese Weise kann sich das ToolTipSteuerelement einfach für Mouse-Over-Ereignisse registrieren und je nach ausgelöstem Ereignis den richtigen Text anzeigen. Dies alles geschieht im Hintergrund.
Yuck
1
Genau. Außerdem können Sie dasselbe Tooltip-Steuerelement für mehrere Steuerelemente verwenden.
Mark Ainsworth
@ MarkAinsworth, da ein Kommentar besagt, dass es gut und einer schlecht ist, geben Sie vielleicht an, ob Sie zustimmen, dass es gut oder schlecht ist? . Ich nehme an, Sie sagen, Sie stimmen zu, dass es gut ist.
Barlop
Ich denke, dies ist ein schlechtes Design, da es nur einen statischen Tooltip unterstützt. Wie würden Sie den Tooltip zur Laufzeit aktualisieren?
Arvo Bowen
89
yourToolTip =newToolTip();//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.");
Vergessen Sie nicht, den Tooltip zu entsorgen, wenn Sie dies bei jedem Mouseover häufig tun. Sie verlieren Handles, bis der GC den Finalizer für die älteren Tooltips aufruft.
Drake7707
21
System.Windows.Forms.ToolTipToolTip1=newSystem.Windows.Forms.ToolTip();ToolTip1.SetToolTip(Label1,"Label for Label1");
Ich habe eine benutzerdefinierte Klasse erstellt, um die Label-Klasse zu erben. Ich habe eine private Variable hinzugefügt, die als Tooltip-Klasse und als öffentliche Eigenschaft TooltipText zugewiesen ist. Dann gab es eine MouseEnter-Delegatenmethode. Dies ist eine einfache Möglichkeit, mit mehreren Label-Steuerelementen zu arbeiten, ohne sich um die Zuweisung Ihres Tooltip-Steuerelements für jedes Label-Steuerelement kümmern zu müssen.
Weisen Sie in der InitializeComponent-Methode des Formular- oder Benutzersteuerelements (dem Designer-Code) Ihr Label-Steuerelement der benutzerdefinierten Klasse neu zu:
this.lblMyLabel =new ucLabel();
Ändern Sie auch die Referenz für private Variablen im Designer-Code:
Antworten:
Sie müssen
ToolTip
Ihrem Formular zuerst ein Steuerelement hinzufügen . Anschließend können Sie den Text festlegen, der für andere Steuerelemente angezeigt werden soll.Hier ist ein Screenshot, der den Designer nach dem Hinzufügen eines
ToolTip
Steuerelements mit dem Namen zeigttoolTip1
:quelle
ToolTip
Steuerelement einfach für Mouse-Over-Ereignisse registrieren und je nach ausgelöstem Ereignis den richtigen Text anzeigen. Dies alles geschieht im Hintergrund.quelle
quelle
nur ein anderer Weg, es zu tun.
quelle
Nur um meine Idee zu teilen ...
Ich habe eine benutzerdefinierte Klasse erstellt, um die Label-Klasse zu erben. Ich habe eine private Variable hinzugefügt, die als Tooltip-Klasse und als öffentliche Eigenschaft TooltipText zugewiesen ist. Dann gab es eine MouseEnter-Delegatenmethode. Dies ist eine einfache Möglichkeit, mit mehreren Label-Steuerelementen zu arbeiten, ohne sich um die Zuweisung Ihres Tooltip-Steuerelements für jedes Label-Steuerelement kümmern zu müssen.
Weisen Sie in der InitializeComponent-Methode des Formular- oder Benutzersteuerelements (dem Designer-Code) Ihr Label-Steuerelement der benutzerdefinierten Klasse neu zu:
Ändern Sie auch die Referenz für private Variablen im Designer-Code:
quelle