1

重複の可能性:
コントロールとその子の描画を一時停止するにはどうすればよいですか?
Winforms ダブル バッファリング

ユーザー定義のコントロール (81 個) を描画するフォームがあり、それぞれに別の 10 個のコントロール (合計 8​​,100 個) が含まれています。すべてが順番に描画されているようです (約 1 秒ほどかかります)。

私はこれら 2つの質問を見て、より良い推奨事項に従いました(this.DoubleBuffered = trueフォームとカスタムコントロールの両方、およびフォームで設定しましたSetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);が、何もしていないように見えました.

フォームのペイント関数を保存し、デリゲートに保存し、フォームがまったく再描画されないようにダミー関数にスワップしてから、実際の関数を元に戻してトリガーする方法はありますか。

これを行うためのより標準的な方法があると思いますが、見つけることができませんでした(そうではありませんSuspendLayout/ResumeLayoutレイアウトロジックを扱うだけです)。

これどうやってするの?

4

1 に答える 1

1

これが答えです: (リンク)。

しかし、考えてみてください。発生しないようPaintにする場合、ユーザーが操作したときに UI コントロールをどのように更新する必要がありますか? ボタンが光ったり、テキストボックスのカーソルがちらついたりすることはありません。

それでよろしければ、なぜRenderToBitmapユーザーコントロールのコンテナを背景画像として使用しないのでしょうか?..

于 2012-11-04T20:58:36.983 に答える