检测是否显示工具提示?

时间:2009-06-02 13:35:18

标签: c# winforms tooltip visibility

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

如果我需要更改显示它的方法,那很好。

3 个答案:

答案 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的解决方案适合你,那就更好了更多