Bir denetime Araç İpucu nasıl eklerim?


154

ToolTipFare üzerinde gezinirken bir göstermek istediğim bazı kontroller var . Bunu nasıl yapabilirim? Bunu kodda değil, aynı zamanda tasarımcıda da nasıl yapıldığını bilmek istiyorum ( ToolTipAraç kutusunda bir bileşen var , ama tam olarak .. anlamıyorum).

Bu bir kopya ise şaşırmazdım, ancak yalnızca daha gelişmiş, spesifik senaryolarda olan soruları bulabilirim. Temelleri bilmek istiyorum.



İlgili ve daha eski (genel olarak .NET için geçerlidir): stackoverflow.com/questions/168550/…
Christopher Kyle Horton

Yanıtlar:


208

İşte kod ile yapmak için makaleniz

private void Form1_Load(object sender, System.EventArgs e)
{
     // Create the ToolTip and associate with the Form container.
     ToolTip toolTip1 = new ToolTip();

     // Set up the delays for the ToolTip.
     toolTip1.AutoPopDelay = 5000;
     toolTip1.InitialDelay = 1000;
     toolTip1.ReshowDelay = 500;
     // Force the ToolTip text to be displayed whether or not the form is active.
     toolTip1.ShowAlways = true;

     // Set up the ToolTip text for the Button and Checkbox.
     toolTip1.SetToolTip(this.button1, "My button1");
     toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}

3
Yani toolTip1değişkenin kapsam dışına çıkması önemli değil mi?
Svish

1
ToolTipTüm formlarınız için bir statik ne olacak ?
Svish

7
Düğme ve onay kutusu yine de referans vereceği için, referans alınmadığında serbest bırakılacaktı
Rowland Shaw

2
"SetToolTip", düğmeye ve onay kutusunun olaylarına EventHandlers eklediğinden referans alıyorlar
Eduardo Wada

3
Ben araç ipucu statik bir değişken koymak kötü bir fikir olduğunu düşünüyorum. Bir Form kapatılıp tekrar açılırsa ne olur? SetTooltip tekrar çalışır mı? Ve eğer öyleyse, kapalı formun işleyicileri bellekte kalacak mı yoksa doğru şekilde çıkarılacak mı? Bunu test etmek için bir dakikam bile geçirmezdim. Bunun yerine bir üye variabe kullanın - kurşun geçirmez!
Elmue

139

Bir araç ipucu denetimini araç kutusundan forma sürükleyin. Gerçekten bir ad dışında herhangi bir özellik vermeniz gerekmez. Ardından, araç ipucu olmasını istediğiniz denetimin özelliklerinde, az önce eklediğiniz araç ipucu denetiminin adıyla yeni bir özellik arayın. İmleç kontrolü gezdirdiğinde varsayılan olarak size bir ipucu verecektir.


54
Bunu yaptığınızda (saat 2'de olduğu gibi) ToolStrip denetimi yerine ToolTip denetimi kullandığınızdan emin olun.
Adrian K

2
Bu cevapla, winform'a sadece tek bir araç ipucu eklemek tüm kontrolleri kendi araç ipucu olarak verir.
SAm

1
Basitliğinde güçlü, sadece onu kontrol etmeyi bıraktığınızdan emin olun, yanında değil (02:00 gibi).
Michael Stimson

40
  1. Formunuza Araç İpucu bileşeni ekleme
  2. Araç ipucu almak istediğiniz denetimlerden birini seçin
  3. Özellik ızgarasını ( F4) açın, listede "toolTip1 üzerindeki ToolTip" (veya benzer bir şey) adlı bir özellik bulacaksınız. Bu özellik üzerinde istediğiniz araç ipucu metnini ayarlayın.
  4. Diğer kontroller için 2-3'ü tekrarlayın
  5. Bitti.

Buradaki hile, Araç İpucu denetiminin bir genişletici denetimi olmasıdır , yani formdaki diğer denetimler için özellik kümesini genişletir . Perdenin arkasında bu, Svetlozar'ın cevabında olduğu gibi kod üreterek elde edilir. Aynı şekilde çalışan başka kontroller de vardır HelpProvider.


1
Farklı metinlere sahip birçok kontrol için aynı Araç İpucu'nu kullanabilirsiniz?
Svish

@Svish: evet, genişletici kontrollerinin amacı budur.
Fredrik Mörk

Çapraz kullanıcı kontrolleri ve formları da kullanılabilir mi? Standart özellik değerlerinizle statik bir Araç İpucu oluşturduysanız olduğu gibi. Yoksa bu kötü bir uygulama mıdır?
Svish

Asla güvenilir ve oldukça Araç İpucu iç işleyişini bilmiyorum, ama bir metin ben tahmin ilgili olduğu denetime bir başvuru alır çünkü could çalışır. Bulmanın bir yolu var; deneyin: o)
Fredrik Mörk

Açıkçası deneyeceğim. Ama özellikle bellek sızıntıları ve benzeri şeyler bulmakta iyi değilim ... Ve eğer bir bellek sızıntısına veya bilmek istediğim bir şeye neden olursa hehe.
Svish

8

C # 'daki ToolTip, neredeyse tüm UI kontrollerine eklemek çok kolaydır. Bunun için hiçbir MouseHover etkinliği eklemenize gerek yoktur.

Böyle yapılır-

  1. Formunuza bir ToolTip nesnesi ekleyin. Bir nesne tüm form için yeterlidir. ToolTip toolTip = new ToolTip();

  2. Denetimi araç metnine istediğiniz metinle ekleyin.

    toolTip.SetToolTip(Button1,"Click here");


1

Bunu şu şekilde yaptım: Sadece herhangi bir kontrole olay ekleyin, kontrol etiketini ayarlayın ve uygun kontrol / etiket için araç ipucunu işlemek için bir koşul ekleyin.

private void Info_MouseHover(object sender, EventArgs e)
{
    Control senderObject = sender as Control;
    string hoveredControl = senderObject.Tag.ToString();

    // only instantiate a tooltip if the control's tag contains data
    if (hoveredControl != "")
    {
        ToolTip info = new ToolTip
        {
            AutomaticDelay = 500
        };

        string tooltipMessage = string.Empty;

        // add all conditionals here to modify message based on the tag 
        // of the hovered control
        if (hoveredControl == "save button")
        {
            tooltipMessage = "This button will save stuff.";
        }

        info.SetToolTip(senderObject, tooltipMessage);
    }
}

-3

Sadece kontrolün ToolTipTextNeeded olayına abone olun ve e.TooltipText'i çok daha basit bir şekilde döndürün.


6
Bunun standart bir WinForm kontrol olayı olduğunu düşünmüyorum.
Dan7
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.