我有一个WinForms应用程序.每个表单和用户控件都按以下方式设置其工具提示:
// in the control constructor
var toolTip = new ToolTip();
this.Disposed += (o, e) => toolTip.Dispose();
toolTip.SetToolTip(this.someButton, "...");
toolTip.SetToolTip(this.someCheckBox, "...");
...
但是,当我将鼠标悬停在控件上时,不会显示工具提示.这是使用工具提示的适当方法吗?在应用程序的另一部分中是否会发生某些事情(例如,监听某个事件),这会导致工具提示无法正常工作?
请注意,外部窗体的工具条按钮上的工具提示(通过按钮的tooltip属性配置)可以正常工作.
编辑:
我已经观察到了更多,并且发现有时工具提示确实出现了,但它非常“脆弱”.基本上,有时候当我将鼠标悬停在某个控件上时,它会非常短暂地显示出来然后忽隐忽现.我可以使用.Show()和较长的AutoPopDelay手动显示它,但是它永远不会消失!
解决方法:
您的代码对我来说似乎还可以.我在您的代码中找不到任何错误.但是,只有在禁用控制后,它才能失败.顺便说一句,您可以尝试这样的另一种方法.但是,我不建议您显示这样的工具提示.
private void someButton_MouseEnter(...)
{
toolTip.Show("Tooltip text goes here", (Button)sender);
}
您还可以在.Show()方法中分配显示工具提示的位置.有一些您可以使用的重载函数.阅读msdn,以获取有关ToolTip.Show()方法的更多信息.