Bagaimana cara menambahkan Tip Alat ke kontrol?


154

Saya memiliki beberapa kontrol yang ingin saya tampilkan ToolTipketika mouse berada di atasnya. Bagaimana saya bisa melakukan ini? Saya ingin tahu bagaimana melakukan ini dengan benar dalam kode, tetapi juga di perancang (Ada ToolTipkomponen di kotak peralatan, tapi saya tidak begitu ... mengerti).

Saya tidak akan terkejut jika ini merupakan duplikat, tetapi saya hanya dapat menemukan pertanyaan yang ada pada skenario yang lebih maju dan spesifik. Saya ingin tahu dasar-dasarnya.



Terkait, dan lebih lama lagi (berlaku untuk .NET secara umum): stackoverflow.com/questions/168550/…
Christopher Kyle Horton

Jawaban:


208

Inilah artikel Anda untuk melakukannya dengan kode

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
Jadi saya kira tidak masalah jika toolTip1variabel keluar dari ruang lingkup?
Svish

1
Bagaimana dengan satu statis ToolTipuntuk semua formulir Anda?
Svish

7
Ini akan dibebaskan setelah menjadi tidak direferensikan, dan itu tidak akan terjadi, karena tombol dan kotak centang masih akan
merujuknya

2
Mereka merujuknya karena "SetToolTip" menambahkan EventHandlers ke tombol dan acara kotak centang
Eduardo Wada

3
Saya pikir ini ide yang buruk untuk menempatkan tooltip ke dalam variabel statis. Bagaimana jika Formulir ditutup dan dibuka lagi? Apakah SetTooltip akan berfungsi lagi? Dan jika demikian, akankah penangan dari bentuk tertutup tetap di memori atau dihapus dengan benar? Saya bahkan tidak akan menghabiskan satu menit untuk menguji itu. Gunakan variabe anggota sebagai gantinya - itu bukti peluru!
Elmue

138

Seret kontrol tooltip dari kotak alat ke formulir Anda. Anda tidak perlu memberinya properti apa pun selain nama. Kemudian, di properti kontrol yang Anda ingin mengaktifkan tooltip, cari properti baru dengan nama kontrol tooltip yang baru saja Anda tambahkan. Ini secara default akan memberi Anda tooltip ketika kursor mengarahkan kontrol.


54
Pastikan bahwa ketika Anda melakukan ini (seperti pada jam 2 pagi) bahwa Anda menggunakan kontrol ToolTip dan bukan kontrol ToolStrip.
Adrian K

2
Dengan jawaban ini, menambahkan hanya satu tooltip ke winform memberikan semua kontrol dalam bentuk tooltip mereka sendiri.
SAm

Kuat dalam kesederhanaannya, pastikan Anda menjatuhkannya pada kontrol yang benar dan bukan yang di sebelahnya (seperti pada jam 2 pagi).
Michael Stimson

40
  1. Tambahkan komponen ToolTip ke formulir Anda
  2. Pilih salah satu kontrol yang Anda inginkan untuk tip alat
  3. Buka kotak properti ( F4), dalam daftar Anda akan menemukan properti yang disebut "ToolTip pada toolTip1" (atau yang serupa). Atur teks tooltip yang diinginkan pada properti itu.
  4. Ulangi 2-3 untuk kontrol lainnya
  5. Selesai

Kuncinya di sini adalah bahwa kontrol ToolTip adalah kontrol extender , yang berarti bahwa itu akan memperluas set properti untuk kontrol lain pada formulir. Di belakang layar ini dicapai dengan menghasilkan kode seperti dalam jawaban Svetlozar. Ada kontrol lain yang bekerja dengan cara yang sama (seperti HelpProvider).


1
Jadi Anda dapat menggunakan Tip Alat yang sama untuk banyak kontrol dengan teks yang berbeda?
Svish

@Vish: ya, itulah tujuan dari kontrol extender.
Fredrik Mörk

Apakah bisa digunakan lintas kontrol dan formulir juga? Seperti jika Anda membuat Tip Alat statis dengan nilai properti standar Anda. Atau apakah itu dianggap praktik buruk?
Svish

Saya tidak pernah mencobanya, dan saya tidak tahu cara kerja ToolTip, tetapi karena ia mendapatkan referensi ke kontrol yang terkait dengan teks saya kira itu bisa berfungsi. Hanya ada satu cara untuk mengetahuinya; Cobalah: o)
Fredrik Mörk

Yah, saya jelas akan mencobanya. Tapi saya tidak terlalu pandai menemukan hal-hal seperti kebocoran memori dan semacamnya ... Dan jika itu akan menyebabkan kebocoran memori atau hal seperti itu yang ingin saya ketahui, hehe.
Svish

8

ToolTip dalam C # sangat mudah untuk ditambahkan ke hampir semua kontrol UI. Anda tidak perlu menambahkan acara MouseHover untuk ini.

Ini adalah cara untuk melakukannya-

  1. Tambahkan objek ToolTip ke formulir Anda. Satu objek sudah cukup untuk seluruh bentuk. ToolTip toolTip = new ToolTip();

  2. Tambahkan kontrol ke tooltip dengan teks yang diinginkan.

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


1

Saya melakukannya dengan cara ini: Cukup tambahkan acara ke kontrol apa pun, atur tag kontrol, dan tambahkan persyaratan untuk menangani tooltip untuk kontrol / tag yang sesuai.

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

Cukup berlangganan acara ToolTipTextNeeded kontrol, dan kembalikan e.TooltipText, jauh lebih sederhana.


6
Saya tidak berpikir itu adalah acara kontrol WinForm standar.
Dan7
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.