Dyl*_*tie 215

ToolTip实际上是一个WinForms控件,用于处理单个表单上多个元素的工具提示.

假设您的按钮名为MyButton.

  1. 将一个ToolTip控件(在Windows窗体工具箱中的Common Controls下)添加到窗体.
  2. 给它一个名字 - 比如说MyToolTip
  3. 将MyButton的"Tooltip on MyToolTip"属性(在按钮属性网格中的Misc下)设置为将鼠标悬停在其上时应显示的文本.

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

MyToolTip.Show("Tooltip text goes here", MyButton)
Run Code Online (Sandbox Code Playgroud)

在你的代码中显示工具提示,MyToolTip.Hide(MyButton)使它再次消失.

  • 您的表单只需要一个ToolTip控件 - 每个按钮可以有不同的帮助文本(这就是为什么"MyToolTip上的工具提示"是相关控件的属性,而不是ToolTip控件本身的属性) (8认同)
  • 在最简单的情况下,将工具提示添加到表单是最好的事情.问题:在自定义控件的设计时,您没有父窗体的引用.解决方案:在Control中创建工具提示对象.不要认为ToolTip对象必须附加到Form. (2认同)

jma*_*ias 89

使用表单设计器:

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

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

this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
Run Code Online (Sandbox Code Playgroud)


Dav*_*veK 42

您可以使用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");
}
Run Code Online (Sandbox Code Playgroud)

  • 这是完美的解决方案,因为它直接与自动生成的 VS 代码集成。谢谢 :) (2认同)

Tim*_*ter 5

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

private void checkBox1_MouseHover(object sender, EventArgs e)
{
    toolTip1.Show("text", checkBox1);
}
Run Code Online (Sandbox Code Playgroud)


nvi*_*yal 5

对于默认工具提示,可以使用-

System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
Run Code Online (Sandbox Code Playgroud)

如果工具提示消息需要格式化,也可以使用自定义的工具提示。这可以通过自定义格式来创建,并将其用作控件的鼠标悬停事件上的工具提示对话框。请检查以下链接以获取更多详细信息-

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


flo*_*dis 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());
                });
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,将在Tag属性中具有字符串的所有按钮分配给MouseHover事件。为了使其紧凑,使用lambda表达式内联定义了MouseHover事件。如果任何悬停的按钮将其标签文本分配给工具提示并显示。


Fry*_*Fry -4

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

ToolTip t = new ToolTip();
Run Code Online (Sandbox Code Playgroud)

然后是事件处理程序:

private void control_MouseHover(object sender, EventArgs e)
{
  t.Show("Text", (Control)sender);
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为您被否决是因为这不是在 Windows 窗体中使用 ToolTip 控件的方式。您只需要表单上有一个这样的控件,它就会显示所有控件的提示。请参阅其他回复中的代码。 (2认同)
  • @ julianz 实际上,这对于拥有专门的工具提示非常有效,如果您想要根据状态而定,这些工具提示可以是动态的(当然减去创作 - 请原谅我,我只是想将其全部放入一个块中。)至于其他响应相似的脉络...yshuditelu 和 Dylan Beattie 很相似,尽管没有实例化。 (2认同)