実際、.Net 2.0 では ToolTip オブジェクトが変更されています。2.0 より前では、ToolTip がアクティブなときに ToolTip テキストが変更されたとき、またはその他の状況で、いくつかの不整合の問題がありました。2.0 以降、現在アクティブなツールチップに影響を与える可能性のある何かが発生するたびに、ツールチップが非表示になります。
これによりいくつかの問題が解決されましたが、SetToolTip() などの直後にいくつかのイベントが発生するようになりました。この関数がこのイベント内から呼び出された場合でも、マウスがマウスから離れるまで ToolTip の描画/非表示の無限ループが発生します。ツールチップ領域。
私自身の回避策は、ToolTip が既に同じかどうかを確認し、そうであれば Set ToolTip() を省略することです。(上記のように静的フラグで単に次のイベントを省略すると、直後に新しいイベントが発生するという保証がないため、問題が発生する可能性があります。たとえば、マウスがツールヒント領域に触れたばかりで、すでに離れている場合などです)。
また、Tooltip を表示するためだけに OnMouseHover を使用すると、ToolTip コンポーネントの内部タイマー機能が無効になるだけでなく、多くの不要なイベントが発生するため、プロセッサ時間が浪費されます。ToolTip コンポーネントの Popup Event は、アクション ポイントとして適切に機能します。
ただし、この特殊なケースでは、マウスの動きを追跡するために OnMouse Hover が必要です。とにかく、ツールチップの位置を変更すると、ツールチップが完全に再描画され、ちらつきます。これは、マウスの位置が 2 つのイベント間で変化したかどうかを確認することで、動かないマウスの場合に減らすことができます。残念ながら、ToolTip コンポーネントには ToolTip の位置を変更する方法がなく、常に現在のマウス位置を基準にして表示されます。したがって、マウスに追従させる唯一の方法は、マウスを閉じて再描画することです。
UseFading および/または UseAnimation プロパティを false に設定すると、ちらつきをさらに減らすことができる場合があります。