show メソッドを使用してコントロールに System.Windows.Forms.Tooltip を手動で表示していますが、ツールチップが現在表示されているかどうかを検出するにはどうすればよいですか?
調べるために表示方法を変更する必要がある場合は、それで問題ありません。
show メソッドを使用してコントロールに System.Windows.Forms.Tooltip を手動で表示していますが、ツールチップが現在表示されているかどうかを検出するにはどうすればよいですか?
調べるために表示方法を変更する必要がある場合は、それで問題ありません。
次のように、ToolTip.GetToolTip(control) を試して、返された値が空の文字列ではないかどうかを確認できます。
if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl))) { // 勝利! }
組み込みのツールチップに非常に問題があったため、タイマーと MouseMoved の追跡を使用して独自のツールチップを作成しました。
これが表示できる唯一のツールチップである場合は、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 のソリューションがうまくいくなら、はるかに優れています。