Обнаружьте, если Подсказку показывают?

Реализация Дастина работает только с делегатами EventHandler. Если вы перейдете к CodePlex, то появится проект под названием Sharp Observation , в котором автор создал очень хорошего поставщика слабых делегатов. Он реализован в MSIL и значительно быстрее и гибче.

... что, до тех пор, пока Microsoft не осуществит слабые события изначально, придется делать.

5
задан Robert MacLean 2 June 2009 в 13:35
поделиться

3 ответа

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

if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl)))
{
    // Victory!
}
10
ответ дан 18 December 2019 в 13:18
поделиться

I had so much trouble with the builtin tooltip that I built my own with a timer and tracking MouseMoved.

3
ответ дан 18 December 2019 в 13:18
поделиться

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

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

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

1
ответ дан 18 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: