3

Windowsフォームアプリケーションのちらつきを減らすことについて、インターネットのあちこちにたくさんの質問があることに気づきました。豊富な実験の結果、私の特定のケースでの解決策は非常に簡単であることがわかりましたControl.DoubleBuffered。ちらつきを示していたコントロールのプロパティをtrueに設定しました。これは、必要な制御クラス(私の場合は、ListViewtoDoubleBufferedListViewとfrom )DataGridViewから単純に導出することで実現しましたDoubleBufferedDataGridView

私が取り組んでいるアプリの主な原因は、オブジェクトのイベントでDataGridViewそのセルの多くを更新することです。ダブルバッファリングを有効にする前は、ほとんどの更新でグリッドがわずかにちらつきます(それほど悪くはありませんが、目立つほど十分です)。ダブルバッファリングを有効にした後、ちらつきは消えました。TickWindows.Forms.Timer

ただし、ここでは開発マシンについて話しています。残念ながら、このアプリは実際にはリモートデスクトップ接続を介してエンドユーザーによって実行されます。これは、レイモンドチェンによるこのブログ投稿から学んだことで、ダブルバッファリングを使用するべきではないことを意味します。

それで、私の質問は、何を使うべきかということです。Chenは、ローカルマシンでのダブルバッファリングアプローチと、リモートデスクトップ接続での従来の非ダブルバッファリングアプローチを切り替えることを提案しています。ただし、その場合でも、このアプリのエンドユーザーはちらつきを経験します。これは単に避けられないのですか?

記録のために:これは/ (すでにそれを実行してコントロール)または/ (すでにそれをコントロールに対しても実行している)という単純な問題ではありませんが、私が言ったように、それは特に重要ではないと思います特定のセルの値を更新しているだけです)。BeginUpdateEndUpdateListBoxListViewSuspendLayoutResumeLayoutDataGridView

ちらつきのないリモートデスクトップアプリは単純に不可能ですか?

4

1 に答える 1

1

「試してみる価値がある」カテゴリ:AllPaintingInWmPaintコントロールにフラグを設定するか、ここで提案されているように OnPaintBackground をオーバーライドします: http://alt.pluralsight.com/wiki/default.aspx/Craig/FlickerFreeControlDrawing.html

これは、バックグラウンド ペイントをフォアグラウンド ペイントに近づけるのに役立ちます。これにより、クライアントからサーバーに同時に送信される可能性が向上します。

于 2010-03-09T20:52:15.737 に答える