Как добавить всплывающую подсказку к элементу управления? - PullRequest
148 голосов
/ 27 августа 2009

У меня есть некоторые элементы управления, для которых я хотел бы отобразить ToolTip, когда мышь наведена на них. Как я могу это сделать? Я хотел бы знать, как сделать это правильно в коде, но также и в конструкторе (в наборе инструментов есть компонент ToolTip, но я не совсем .. понимаю).

Я не удивлюсь, если это дубликат, но я могу найти только вопросы по более сложным, специфическим сценариям. Я хотел бы знать основы.

Ответы [ 6 ]

193 голосов
/ 27 августа 2009

Здесь - ваша статья для того, чтобы сделать это с кодом

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");
}
137 голосов
/ 27 августа 2009

Перетащите элемент управления всплывающей подсказки из панели инструментов на форму. Вам действительно не нужно давать ему какие-либо свойства, кроме имени. Затем в свойствах элемента управления, для которого вы хотите иметь всплывающую подсказку, найдите новое свойство с именем только что добавленного элемента управления всплывающей подсказкой. По умолчанию он даст вам всплывающую подсказку, когда курсор наведет курсор на элемент управления.

39 голосов
/ 27 августа 2009
  1. Добавление компонента всплывающей подсказки в форму
  2. Выберите один из элементов управления, для которого требуется всплывающая подсказка для
  3. Откройте сетку свойств ( F4 ), в списке вы найдете свойство «ToolTip on toolTip1» (или что-то подобное). Установите желаемый текст всплывающей подсказки для этого свойства.
  4. Повторите 2-3 для других элементов управления
  5. Готово.

Хитрость в том, что элемент управления ToolTip является элементом управления extender , что означает, что он расширит набор свойств для других элементов управления в форме. За кулисами это достигается путем генерации кода, как в ответе Светлозара. Есть другие элементы управления, работающие таким же образом (например, HelpProvider).

7 голосов
/ 03 июня 2014

ToolTip в C # очень легко добавить почти ко всем элементам управления пользовательского интерфейса. Вам не нужно добавлять какое-либо событие MouseHover для этого.

Вот как это сделать -

  1. Добавьте объект ToolTip к вашей форме. Одного объекта достаточно для всей формы. ToolTip toolTip = new ToolTip();

  2. Добавьте элемент управления к всплывающей подсказке с нужным текстом.

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

1 голос
/ 21 августа 2018

Я сделал это следующим образом: просто добавьте событие в любой элемент управления, установите тег элемента управления и добавьте условие для обработки всплывающей подсказки для соответствующего элемента управления / тега.

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);
    }
}
0 голосов
/ 25 ноября 2010

Просто подпишитесь на событие элемента управления ToolTipTextNeeded и верните e.TooltipText, что намного проще.

...