(とりわけ) テキスト ボックス コントロールを含む C# (VS2010) でフォームを作成しました。テキストボックスには、ある時点で大量のデータが含まれる場合があります (~300 万文字)。
フォームをスクロールまたは移動しても問題は発生しませんが、フォームを最小化して元に戻すと、再描画シーケンス (私は信じています) がトリガーされ、フォームが再描画されるまでに約 5 ~ 10 秒の大きな遅延が発生します。
私はすでにいくつかの解決策を試しました:
ダブル バッファの使用 - 私が読んだ内容によると、ダブル バッファリングはフォーム自体にのみ適用され、そのコントロールには適用されません。
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
を使用して最小化したらテキストボックスの再描画を無効にし、
SendMessage(this.my_textBox.Handle, WM_SETREDRAW, false, 0);
フォームが復元された後に有効に戻します。テキストボックスの repaint を再度有効にしないと、フォームの再描画ラグも存在することに気付きました。ビットマップを使用した手動ダブル バッファ – #1 と同様の結果。
この問題は、データ量を縮小または調整しようとしているテキスト ボックス コントロールに関連している可能性があることをどこかで読みましたが、それをオーバーライドできませんでした。
以前、MFC で同じプロジェクトを使用していましたが、再描画や遅延の問題は発生しませんでした。
この問題を解決する方法を教えてください。