1

コントロールの 1 つに非常に長いツールチップ (約 4000 文字) を表示するには、組み込みの WinForms ツールチップ コントロールを使用する必要があります。しかし、そうすると、ヒントを表示するためにマウス ポインターをターゲット コントロールに置いたときに、フォームが 1 ~ 2 分間フリーズします。そして、その後何も起こりません。

実験の結果、約 2000 文字で標準のツールチップの動作が非常に遅くなり、文字数を増やすと状況がさらに悪化することがわかりました。これは既知の問題で、回避策はありますか? ヒントのテキストをトリミングするよう提案しないでください。文字列をそのまま表示する必要があります。

4

2 に答える 2

1

テキストの文字列を に割り当てると、描画プロセスの一部として、画面上の文字の Unicode レイアウトを処理ToolTipする の呼び出しが含まれます。USP10.dllこれは、プログラムがフリーズしているときにスタック トレースを確認することで確認できました。このレイアウトのパフォーマンスは、長い文字列に対してひどいものです。

アプリケーションのビジュアル スタイルを無効にする (コメント アウトするEnableVisualStyles()) と、問題が修正されました。ツールチップはすぐに表示されますが、これは最適な解決策ではありません。

探し続けたところ、ワードラップが必要な長い文字列のレイアウトに問題がリンクしている可能性があることを示すこのページを見つけました。ツールチップ テキストに改行を挿入すると、文字列がすぐに表示されることがわかりました。そのため、改行を挿入する場所を手動で決定できれば、ToolTipすぐに表示されるはずです。

于 2013-07-29T16:13:40.453 に答える