Определить, отображается ли всплывающая подсказка? - PullRequest
5 голосов
/ 02 июня 2009

Я вручную отображаю System.Windows.Forms.Tooltip на элементе управления, используя метод show, но как я могу определить, отображается ли в данный момент всплывающая подсказка?

Если мне нужно изменить способ показа, чтобы выяснить это нормально.

Ответы [ 3 ]

10 голосов
/ 06 июня 2009

Вы можете попробовать ToolTip.GetToolTip (control) и проверить, не является ли возвращаемое значение пустой строкой, например:

if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl)))
{
    // Victory!
}
2 голосов
/ 06 июня 2009

У меня было столько проблем со встроенной всплывающей подсказкой, что я создал свою собственную с помощью таймера и отслеживания MouseMoved.

1 голос
/ 06 июня 2009

Если это единственная всплывающая подсказка, которая может быть показана, используйте решение Томми.

Если есть подсказки вне вашего контроля, вы можете перечислить все окна подсказок и проверить, является ли одно из них

а) показано

б) в пределах формы / заявки

примерно так:

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 . Это что-то вроде хака, и если решение Томми работает для вас, оно будет намного лучше.

...