7

我正在使用 show 方法在控件上手动显示 System.Windows.Forms.Tooltip,但是如何检测当前是否显示了工具提示?

如果我需要更改显示它的方法以找出答案,那很好。

4

3 回答 3

9

您可以尝试 ToolTip.GetToolTip(control),并检查返回的值是否不是空字符串,如下所示:

if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl)))
{
    // 胜利!
}
于 2009-06-06T15:05:39.160 回答
3

我在内置工具提示上遇到了很多麻烦,我用计时器和跟踪 MouseMoved 构建了自己的工具提示。

于 2009-06-06T15:50:05.797 回答
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
        }
    }

}

将此代码用于EnumWindows互操作包装器。这有点小技巧,如果 Tommy 的解决方案对您有用,那就更好了

于 2009-06-06T15:39:10.210 回答