我使用show方法在控件上手动显示System.Windows.Forms.Tooltip,但是如何检测当前是否显示工具提示?
如果我需要更改显示它的方法,那很好。
答案 0 :(得分:10)
您可以尝试ToolTip.GetToolTip(control),并检查返回的值是否不是空字符串,如下所示:
if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl))) { // Victory! }
答案 1 :(得分:2)
我在使用内置工具提示时遇到了很多麻烦,我使用计时器和跟踪MouseMoved构建了自己的工具提示。
答案 2 :(得分:1)
如果这是唯一可能显示的工具提示,请使用Tommy的解决方案。
如果您的控件之外有工具提示,您可以枚举所有工具提示窗口并检查其中一个是否
a)显示
b)在您的表单/应用程序范围内
有点像这样:
Native.EnumWindows ew = new Native.EnumWindows();
ew.GetWindows();
foreach (EnumWindowsItem item in ew.Items)
{
//find all windows forms tooltips currently visible
if (item.ClassName.StartsWith("WindowsForms10.tooltips_class32") && item.Visible)
{
//check if tooltip is on within form bounds
if (item.Location.X >= this.Location.X && item.Location.Y >= this.Location.Y &&
item.Location.X <= this.Location.X + this.Width &&
item.Location.Y <= this.Location.Y + this.Height)
{
//Tooltip currently shown within form bounds
}
}
}
使用this code作为EnumWindows互操作包装器。 这有点像黑客,如果Tommy的解决方案适合你,那就更好了更多。