私はshowメソッドを使用してコントロールにSystem.Windows.Forms.Tooltipを手動で表示していますが、現在ツールチップが表示されているかどうかを検出するにはどうすればよいですか?ツールチップが表示されているかどうかを検出しますか?
表示方法を変更する必要がある場合は、問題ありません。
私はshowメソッドを使用してコントロールにSystem.Windows.Forms.Tooltipを手動で表示していますが、現在ツールチップが表示されているかどうかを検出するにはどうすればよいですか?ツールチップが表示されているかどうかを検出しますか?
表示方法を変更する必要がある場合は、問題ありません。
あなたはToolTip.GetToolTip(制御)してみてください、と返された値は、次のように、空の文字列でないかどうかを確認できます。
if (!string.IsNullOrEmpty(myToolTip.GetToolTip(myControl))) { // Victory! }
'GetToolTip'(winformsのテスト済み)は' SetToolTip'メソッドが 'Control'に対して呼び出されたかどうかだけをチェックします。その場合は、ツールチップが表示されているかどうかに関係なく、テキストが返されます。私が見た限りでは、 'GetToolTip'の戻り値と' Show'が呼び出された場合の間には関係がありません。 – Xilconic
この受け入れられた答えは間違っています。これは、ツールヒントが現在表示されているかどうかを示すものではなく、コントロールのツールヒントのテキスト値のみを取得します。 –
これはおそらく示すことができる唯一のツールチップである場合には、トミーのを使用溶液。ツールチップがあなたのコントロールの外にある場合は、それらのいずれかがある場合
、あなたはすべてのツールチップウィンドウを列挙してチェックすることができ
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相互運用ラッパーのthis codeを使用してこのような。 それはちょっとしたハックだし、もしTommyの解決策があなたのために働くならば、それは多くはです。
ラッパーコードのリンクが壊れています。 – ThunderGr
私はタイマーと追跡MouseMovedで自分自身を構築したビルトインのツールチップに非常に問題がありました。
.Net 3.0または3.5を使用している場合は、そのためのフラグIsOpenがあります。 2.0フレームワークでは、私はToolTip.Activeが役に立ちそうだと思います。確かに。 – danish
'IsOpen'はWPFツールチップ上のプロパティであり、winformsツールチップ上のプロパティではありません。 – Xilconic
ToolTip.Activeプロパティは、ツールヒントが表示されているかどうかに依存しません。しかし、あなたのコードはコードを変更するまで、あなたのコードがそれを維持します。 –