我正在使用 show 方法在控件上手动显示 System.Windows.Forms.Tooltip,但是如何检测当前是否显示了工具提示?
如果我需要更改显示它的方法以找出答案,那很好。
我正在使用 show 方法在控件上手动显示 System.Windows.Forms.Tooltip,但是如何检测当前是否显示了工具提示?
如果我需要更改显示它的方法以找出答案,那很好。
您可以尝试 ToolTip.GetToolTip(control),并检查返回的值是否不是空字符串,如下所示:
if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl))) { // 胜利! }
我在内置工具提示上遇到了很多麻烦,我用计时器和跟踪 MouseMoved 构建了自己的工具提示。
如果这是唯一可能显示的工具提示,请使用 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
}
}
}
将此代码用于EnumWindows互操作包装器。这有点小技巧,如果 Tommy 的解决方案对您有用,那就更好了。