C# 如何向控件添加工具提示?
我想在鼠标悬停在控件上时显示C# 如何向控件添加工具提示?,c#,winforms,tooltip,C#,Winforms,Tooltip,我想在鼠标悬停在控件上时显示工具提示 如何在代码中以及在设计器中创建工具提示?这篇文章是关于如何使用代码创建工具提示的 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 dela
工具提示
如何在代码中以及在设计器中创建工具提示?这篇文章是关于如何使用代码创建工具提示的
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");
}
将工具提示控件从工具箱拖到窗体上。除了名称之外,您实际上不需要给它任何属性。然后,在希望显示工具提示的控件的属性中,查找具有您刚才添加的工具提示控件名称的新属性。默认情况下,当光标悬停在控件上时,它将为您提供工具提示
将工具提示组件添加到表单中
选择要为其提供工具提示的控件之一
打开属性网格(F4),在列表中可以找到名为“ToolTip on toolTip1”(或类似内容)的属性。在该属性上设置所需的工具提示文本
对其他控件重复2-3
完成了
这里的技巧是工具提示控件是一个扩展控件,这意味着它将扩展窗体上其他控件的属性集。在幕后,这是通过生成类似Svetlozar回答中的代码来实现的。还有其他控件以同样的方式工作(例如帮助提供者)。只需订阅控件的ToolTipTextRequired事件,并返回e.TooltipText,这要简单得多。C中的ToolTip很容易添加到几乎所有UI控件中。您不需要为此添加任何鼠标悬停事件
这是如何做到的-
将工具提示对象添加到表单中。一个对象对于整个表单就足够了。
ToolTip ToolTip=新工具提示()代码>
使用所需文本将控件添加到工具提示中
toolTip.SetToolTip(按钮1,“单击此处”)代码>
我是这样做的:只需将事件添加到任何控件,设置控件的标记,并添加一个条件来处理相应控件/标记的工具提示
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);
}
}
因此,您可以对具有不同文本的许多控件使用相同的工具提示?@Svish:是的,这是extender控件的用途。它也可以用于跨用户控件和表单吗?就像使用标准特性值创建静态工具提示一样。或者这会被认为是不好的做法吗?我从未尝试过,我也不太了解工具提示的内部工作原理,但由于它得到了一个与文本相关的控件的引用,我想它可能会工作。只有一种方法可以找到答案;试试看:哦,我当然会试试看。但我并不特别擅长发现诸如内存泄漏之类的东西。。。如果它会导致内存泄漏或诸如此类的事情,我很想知道,呵呵。所以我想,如果toolTip1
变量超出范围,那也没关系吧?对于你所有的表单,一个静态ToolTip
怎么样?一旦它变为未引用,它就会被释放,而不是,由于按钮和复选框仍然会引用它,因此它们引用它是因为“SetToolTip”将事件处理程序添加到按钮和复选框的事件中。我认为将工具提示放入静态变量是个坏主意。如果表单被关闭并再次打开,该怎么办?SetTooltip还会工作吗?如果是这样的话,关闭表单的处理程序会留在内存中还是被正确删除?我甚至不会花一分钟来测试它。使用一个成员变量来代替-这是防弹的!我不认为这是标准的WinForm控件事件。请确保在执行此操作时(如凌晨2点)使用工具提示控件,而不是ToolStrip控件。根据此答案,仅向WinForm添加一个工具提示即可为窗体中的所有控件提供其自己的工具提示。其简单性非常强大,只需确保将其放在右边的控件上,而不是旁边的控件上(如凌晨2点)。双击工具提示控件可将其添加到表单中,该表单可能与相关的或更旧的控件重复(通常适用于.NET):