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 のソリューションを使用してください。

コントロールの範囲外にツールチップがある場合は、すべてのツールチップ ウィンドウを列挙し、そのうちの 1 つが

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 に答える