web-dev-qa-db-fra.com

Comment ajouter un conseil ou une info-bulle à une étiquette dans Winforms C #?

Il semble que le Label ne possède pas de propriété Hint ou ToolTip ou Hovertext. Alors, quelle est la méthode préférée pour afficher un indice, une info-bulle ou un texte survolé lorsque le Label est approché par la souris?

76
B. Clay Shannon

Vous devez d'abord ajouter un contrôle ToolTip à votre formulaire. Ensuite, vous pouvez définir le texte à afficher pour les autres contrôles.

Voici une capture d'écran montrant le concepteur après avoir ajouté un contrôle ToolTip nommé toolTip1:

enter image description here

104
Yuck
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.");
80
SeeSharp
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip( Label1, "Label for Label1");
20
scibuff

juste une autre façon de le faire.

Label lbl = new Label();
new ToolTip().SetToolTip(lbl, "tooltip text here");
13
ac0de

Juste pour partager mon idée ...

J'ai créé une classe personnalisée pour hériter de la classe Label. J'ai ajouté une variable privée affectée en tant que classe Tooltip et une propriété publique, TooltipText. Ensuite, lui a donné une méthode déléguée MouseEnter. C'est un moyen facile de travailler avec plusieurs contrôles d'étiquettes sans avoir à vous soucier de l'affectation de votre contrôle Info-bulle pour chaque contrôle d'étiquette.

    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);
            }
        }
    }

Dans la méthode InitializeComponent du contrôle utilisateur ou du formulaire (code Designer), réaffectez votre contrôle Label à la classe personnalisée:

this.lblMyLabel = new ucLabel();

Modifiez également la référence à la variable privée dans le code du concepteur:

private ucLabel lblMyLabel;
5
cChacon