233

如何使用Windows 窗体在按钮上显示工具提示?

4

9 回答 9

243

ToolTip 是一个单独的 WinForms 控件,用于处理在单个表单上显示多个元素的工具提示。

假设您的按钮名为 MyButton。

  1. 将 ToolTip 控件(在 Windows 窗体工具箱中的 Common Controls 下)添加到您的窗体。
  2. 给它一个名字 - 说 MyToolTip
  3. 将 MyButton 的“Tooltip on MyToolTip”属性(在按钮属性网格中的 Misc 下)设置为当您将鼠标悬停在它上面时应该出现的文本。

当光标悬停在按钮上时,工具提示将自动出现,但如果您需要以编程方式显示它,请调用

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

在您的代码中显示工具提示,以及

MyToolTip.Hide(MyButton);

让它再次消失。

于 2008-10-03T19:50:53.430 回答
102

使用表单设计器:

  • 将 ToolTip 控件从工具箱拖到窗体上。
  • 选择您希望工具提示出现的控件的属性。
  • 找到属性“toolTip on toolTip1”(如果您更改了它的默认名称,则名称可能不是 toolTip1)。
  • 将属性的文本设置为您要显示的工具提示文本。

您还可以使用以下调用以编程方式设置工具提示:

this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
于 2008-10-03T19:55:53.437 回答
54

您可以使用 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");
}
于 2008-10-03T19:47:26.153 回答
6

.NET 框架提供了一个 ToolTip 类。将其中一个添加到您的表单中,然后在您想要工具提示的每个项目的 MouseHover 事件上,执行以下操作:

private void checkBox1_MouseHover(object sender, EventArgs e)
{
    toolTip1.Show("text", checkBox1);
}
于 2008-10-03T19:48:17.023 回答
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

于 2015-08-04T09:18:58.540 回答
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事件是使用 lambda 表达式内联定义的。如果任何悬停的按钮都将其标记文本分配给工具提示并显示。

于 2016-06-13T11:39:38.983 回答
3
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");
}
于 2018-03-01T16:09:10.833 回答
2

根据DaveK 的回答,我创建了一个控件扩展:

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

然后,您可以使用单行为任何控件设置工具提示:

this.MyButton.SetToolTip("Hello world");
于 2020-06-23T14:56:33.737 回答
-4

当然,只需处理 mousehover 事件并告诉它显示工具提示。t 是在全局变量或构造函数中定义的工具提示,使用:

ToolTip t = new ToolTip();

然后是事件处理程序:

private void control_MouseHover(object sender, EventArgs e)
{
  t.Show("Text", (Control)sender);
}
于 2008-10-03T19:39:43.267 回答