Windowsフォームアプリケーションのちらつきを減らすことについて、インターネットのあちこちにたくさんの質問があることに気づきました。豊富な実験の結果、私の特定のケースでの解決策は非常に簡単であることがわかりましたControl.DoubleBuffered
。ちらつきを示していたコントロールのプロパティをtrueに設定しました。これは、必要な制御クラス(私の場合は、ListView
toDoubleBufferedListView
とfrom )DataGridView
から単純に導出することで実現しましたDoubleBufferedDataGridView
。
私が取り組んでいるアプリの主な原因は、オブジェクトのイベントでDataGridView
そのセルの多くを更新することです。ダブルバッファリングを有効にする前は、ほとんどの更新でグリッドがわずかにちらつきます(それほど悪くはありませんが、目立つほど十分です)。ダブルバッファリングを有効にした後、ちらつきは消えました。Tick
Windows.Forms.Timer
ただし、ここでは開発マシンについて話しています。残念ながら、このアプリは実際にはリモートデスクトップ接続を介してエンドユーザーによって実行されます。これは、レイモンドチェンによるこのブログ投稿から学んだことで、ダブルバッファリングを使用するべきではないことを意味します。
それで、私の質問は、何を使うべきかということです。Chenは、ローカルマシンでのダブルバッファリングアプローチと、リモートデスクトップ接続での従来の非ダブルバッファリングアプローチを切り替えることを提案しています。ただし、その場合でも、このアプリのエンドユーザーはちらつきを経験します。これは単に避けられないのですか?
記録のために:これは/ (すでにそれを実行してコントロール)または/ (すでにそれをコントロールに対しても実行している)という単純な問題ではありませんが、私が言ったように、それは特に重要ではないと思います特定のセルの値を更新しているだけです)。BeginUpdate
EndUpdate
ListBox
ListView
SuspendLayout
ResumeLayout
DataGridView
ちらつきのないリモートデスクトップアプリは単純に不可能ですか?