【问题标题】:How do I add a ToolTip to a control?如何向控件添加工具提示?
【发布时间】:2010-11-23 07:06:20
【问题描述】:

我想在鼠标悬停在控件上时显示ToolTip

如何在代码中以及在设计器中创建工具提示?

【问题讨论】:

标签: c# winforms tooltip


【解决方案1】:

Here 是你写代码的文章

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

【讨论】:

  • 所以我想toolTip1 变量是否超出范围并不重要?
  • 为所有表单使用一个静态ToolTip 怎么样?
  • 一旦它成为未引用它就会被释放,它不会被释放,因为按钮和复选框仍然会引用它
  • 他们引用它是因为“SetToolTip”将 EventHandlers 添加到按钮和复选框的事件中
  • 我认为将工具提示放入静态变量是个坏主意。如果表单关闭并再次打开怎么办? SetTooltip 会再次起作用吗?如果是这样,关闭表单的处理程序会保留在内存中还是正确删除?我什至不会花一分钟来测试它。改用成员变量 - 这就是防弹!
【解决方案2】:

将工具提示控件从工具箱拖到表单上。除了名称之外,您实际上不需要给它任何属性。然后,在您希望在其上显示工具提示的控件的属性中,查找具有您刚刚添加的工具提示控件名称的新属性。默认情况下,当光标悬停在控件上时,它会为您提供工具提示。

【讨论】:

  • 确保在执行此操作时(例如凌晨 2 点)使用的是 ToolTip 控件而不是 ToolStrip 控件。
  • 有了这个答案,只需向 winform 添加一个工具提示即可为表单中的所有控件提供自己的工具提示。
  • 功能强大,简单易用,只需确保将其放在正确的控件上,而不是旁边的控件上(例如凌晨 2 点)。
  • 双击工具提示控件将其添加到表单中
【解决方案3】:
  1. 在表单中添加工具提示组件
  2. 选择您想要工具提示的控件之一
  3. 打开属性网格 (F4),在列表中您会发现一个名为“ToolTip on toolTip1”的属性(或类似的东西)。在该属性上设置所需的工具提示文本。
  4. 对其他控件重复 2-3
  5. 完成。

这里的诀窍在于,ToolTip 控件是一个扩展器控件,这意味着它将扩展表单上其他控件 的属性集。在幕后,这是通过生成像 Svetlozar's answer 中的代码来实现的。还有其他控件以相同的方式工作(例如HelpProvider)。

【讨论】:

  • 所以你可以为许多不同文本的控件使用相同的工具提示?
  • @Svish:是的,这就是扩展控件的目的。
  • 也可以跨用户控件和表单使用吗?就像您使用标准属性值创建了一个静态工具提示一样。或者这会被认为是不好的做法?
  • 我从未尝试过,也不太了解 ToolTip 的内部工作原理,但由于它引用了与文本相关的控件,我猜它可以 i> 工作。只有一种方法可以找出答案;试试看:o)
  • 好吧,我显然会尝试一下。但是我并不是特别擅长寻找内存泄漏之类的东西......如果它会导致内存泄漏或类似的事情我想知道,呵呵。
【解决方案4】:

C# 中的 ToolTip 非常容易添加到几乎所有 UI 控件中。您不需要为此添加任何 MouseHover 事件。

这是怎么做的-

  1. 将 ToolTip 对象添加到表单中。一个对象就足够了整个表单。 ToolTip toolTip = new ToolTip();

  2. 将控件添加到带有所需文本的工具提示中。

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

【讨论】:

    【解决方案5】:

    我是这样做的:只需将事件添加到任何控件,设置控件的标签,然后添加一个条件来处理相应控件/标签的工具提示。

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

    【讨论】:

      【解决方案6】:

      只需订阅控件的ToolTipTextNeeded事件,并返回e.TooltipText,就简单多了。

      【讨论】:

      • 我不认为这是一个标准的 WinForm 控件事件。
      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2019-08-14
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多