Показуйте підказку над кнопкою за допомогою Windows Forms


Відповіді:


222

ToolTip - це фактично елемент управління WinForms, який обробляє відображення підказок інструментів для декількох елементів на одній формі.

Скажіть, ваша кнопка називається MyButton.

  1. Додайте до своєї форми керування ToolTip (у розділі Загальні елементи керування в панелі інструментів Windows Forms).
  2. Дайте ім’я - скажіть MyToolTip
  3. Встановіть властивість "Підказка на MyToolTip" в MyButton (у розділі Різне в сітці властивостей кнопки) на текст, який повинен з’являтися, коли наведіть на нього курсор миші.

Підказка автоматично з’явиться, коли курсор наводить на кнопку, але якщо вам потрібно її відобразити програмно, зателефонуйте

MyToolTip.Show("Tooltip text goes here", MyButton)

у вашому коді, щоб показати підказку, і MyToolTip.Hide (MyButton), щоб знов зникнути.


приємно, але питання: якщо у мене більше однієї кнопки у формі, мені потрібно більше підказок або я можу встановити кілька описів і кнопок для однієї підказки?
ghiboz

8
Для вашої форми потрібен лише один елемент керування ToolTip - кожна кнопка може мати різний довідковий текст (саме тому "Підказка на MyToolTip" є властивістю асоційованого елемента керування, а не самого контролю ToolTip)
Ділан Бітті

2
У найпростішому випадку найкраще зробити додавання підказки до Форми. Проблема: під час проектування користувацького керування у вас немає посилання на батьківську форму. Рішення: створіть об’єкт підказок у керуванні. Не думайте, що об’єкт ToolTip обов'язково додається до форми.
Стефан Гурішон

93

Використання дизайнера форм:

  • Перетягніть елемент керування ToolTip з панелі інструментів на форму.
  • Виберіть властивості елемента керування, на якому потрібно відобразити наконечник інструмента.
  • Знайдіть властивість "ToolTip on toolTip1" (ім'я може не бути toolTip1, якщо ви змінили ім'я за замовчуванням).
  • Встановіть текст властивості до тексту підказки, який ви хочете показати.

Ви також можете встановити підказку інструмента програмно за допомогою наступного дзвінка:

this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");

45

Ви можете використовувати клас ToolTip:

Створення підказки для керування

Приклад:

private void Form1_Load(object sender, System.EventArgs e)
{
    System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
    ToolTip1.SetToolTip(this.Button1, "Hello");
}

1
Це ідеальне рішення, оскільки воно інтегрується безпосередньо з автоматично створеним кодом VS. Дякую :)
anon58192932

@DaveK Дякую Краще так, тому що я можу визначити всі підказки на одному місці
fedeteka

Дякую. Найкраща і найпростіша відповідь на це питання.
Najeeb

Ще коротше:new ToolTip().SetToolTip(this.Button1, "Hello");
The_Black_Smurf

6

Для типової підказки це можна використовувати -

System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");

Налаштована підказка також може бути використана у випадку, якщо для повідомлення підказки потрібне форматування. Це можна створити за допомогою спеціального форматування форми та використання її як діалогового вікна підказки у випадку наведення курсору миші. Будь ласка, перегляньте наступне посилання для більш детальної інформації -

http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html


5

Ледаче та компактне зберігання тексту у властивості Tag

Якщо ви трохи ледачий і не використовуєте властивість Tag елементів управління ні для чого іншого, ви можете використовувати його для зберігання тексту підказки та призначення обробників подій MouseHover для всіх таких елементів керування за один раз таким чином:

    private System.Windows.Forms.ToolTip ToolTip1;
    private void PrepareTooltips()
    {
        ToolTip1 = new System.Windows.Forms.ToolTip();
        foreach(Control ctrl in this.Controls)
        {
            if (ctrl is Button && ctrl.Tag is string)
            {
                ctrl.MouseHover += new EventHandler(delegate(Object o, EventArgs a)
                {
                    var btn = (Control)o;
                    ToolTip1.SetToolTip(btn, btn.Tag.ToString());
                });
            }
        }
    }

У цьому випадку всім кнопкам, що мають рядок у властивості Tag , присвоюється подія MouseHover . Щоб він був компактним, подія MouseHover визначається вбудованим, використовуючи лямбда-вираз. У випадку, якщо будь-яка кнопка буде накладена, текст тексту буде присвоєно підказці та буде показано.


4

Рамка .NET забезпечує клас ToolTip. Додайте один із них до своєї форми, а потім у події MouseHover для кожного елемента, до якого ви хочете підказку, зробіть щось на зразок наступного:

    private void checkBox1_MouseHover(object sender, EventArgs e)
    {
        toolTip1.Show("text", checkBox1);
    }

4
private void Form1_Load(object sender, System.EventArgs e)
{
    ToolTip toolTip1 = new ToolTip();
    toolTip1.AutoPopDelay = 5000;
    toolTip1.InitialDelay = 1000;
    toolTip1.ReshowDelay = 500;
    toolTip1.ShowAlways = true;
    toolTip1.SetToolTip(this.button1, "My button1");
    toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}

4
Хоча цей фрагмент коду може вирішити питання, у тому числі пояснення дійсно допомагає покращити якість вашої публікації. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, і ці люди можуть не знати причини вашої пропозиції щодо коду.
сецеліт

0

На основі відповіді DaveK я створив розширення управління:

public static void SetToolTip(this Control control, string txt)
{
    new ToolTip().SetToolTip(control, txt);
}

Тоді ви можете встановити підказку для будь-якого управління одним рядком:

this.MyButton.SetToolTip("Hello world");

-4

Звичайно, просто обробіть подію на миші та скажіть, щоб вона відображала підказку інструменту. t - підказка, визначена або в глобальній галузі, або в конструкторі, використовуючи:

ToolTip t = new ToolTip();

то обробник події:

private void control_MouseHover(object sender, EventArgs e)
{
  t.Show("Text", (Control)sender);
}

2
Думаю, ви проголосували, оскільки це не спосіб використання елементів керування ToolTip у Windows Forms. Вам потрібен лише один такий елемент на формі, і він показує підказки для всіх елементів керування. Дивіться код в інших відповідях.
Джуліан Мелвілл

1
Я думаю, що пояснення не відповідає коду, де в поясненні, яке я сказав, відобразити його і в коді я його ініціалізував. Моє ліжко. : P
Fry

2
@ julianz Насправді це добре працює за тим, що у вас є спеціалізовані підказки, які можуть бути динамічними, якщо ви хочете залежно від стану (мінус, звичайно, створення - вибачте, я просто намагався вкласти це все в один блок.) Що стосується інших відповідей на схожа жилка ... йшудітельу і Ділан Бітті були схожі, хоча і без обґрунтування.
Срій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.