C # Winforms'ta bir etikete nasıl ipucu veya araç ipucu ekleyebilirim?


Yanıtlar:


112

Önce ToolTipformunuza bir kontrol eklemelisiniz . Daha sonra diğer kontroller için göstermesi gereken metni ayarlayabilirsiniz.

İşte ToolTip, adlı bir denetim ekledikten sonra tasarımcıyı gösteren bir ekran görüntüsü toolTip1:

görüntü açıklamasını buraya girin


20
Vay canına, bu karmaşık / mantıksız görünüyor, Yuck.
B. Clay Shannon

@ClayShannon Sanırım öyle. Ancak tasarım biraz zarif. Bazı kontroller asla araç ipuçlarını istemez. Bu şekilde, ToolTipkontrol, fare ile üzerine gelme olayları için kendisini kaydedebilir ve oluşan olaya bağlı olarak uygun metni görüntüleyebilir. Bunların hepsi arka planda oluyor.
Yuck

1
Katılıyorum. Aynı araç ipucu denetimini birden çok denetim için kullanmanıza da olanak tanır.
Mark Ainsworth

@MarkAinsworth, bir yorum iyi olduğunu ve bir de kötü olduğunu söylediği için, belki de bunun iyi olduğunu mu yoksa kötü olduğunu mu belirtiyorsunuz? . Sanırım bunun iyi olduğunu kabul ettiğinizi söylüyorsunuz.
barlop

Bunun kötü bir tasarım olduğunu düşünüyorum çünkü sadece statik bir ipucunu destekliyor. Araç ipucunu çalışma zamanında nasıl güncellersiniz?
Arvo Bowen

91
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.");

Her fareyle üzerine geldiğinizde bunu çok fazla yaparsanız, araç ipucunu atmayı unutmayın, GC eski araç ipuçlarında sonlandırıcıyı çağırana kadar tutamaçları sızdırırsınız.
drake7707

21
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip( Label1, "Label for Label1");

15

bunu yapmanın başka bir yolu.

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

5

Sadece fikrimi paylaşmak için ...

Label sınıfını devralmak için özel bir sınıf oluşturdum. Bir Tooltip sınıfı olarak atanan özel bir değişken ve bir genel özellik olan TooltipText ekledim. Ardından, bir MouseEnter temsilci yöntemi verdi. Bu, birden çok Etiket denetimi ile çalışmanın kolay bir yoludur ve her Etiket denetimi için Araç İpucu denetiminizi atama konusunda endişelenmenize gerek yoktur.

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

Form veya kullanıcı denetiminin InitializeComponent yönteminde (Tasarımcı kodu), Etiket denetiminizi özel sınıfa yeniden atayın:

this.lblMyLabel = new ucLabel();

Ayrıca, Tasarımcı kodundaki özel değişken referansını değiştirin:

private ucLabel lblMyLabel;

Ancak, kullanıcı Form görsel tasarımcısını kullanarak bir şeyi her değiştirdiğinde Tasarımcı kodu yeniden oluşturulmaz mı?
Robert Synoradzki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.