ハックライフノート

技術的な話とか、覚え書き

[VB.NET]DataGridViewの描画を高速化する

DataGridViewと言えば、データベースから引っ張ってきたデータ群を表示したり、色んな用途で使えるコンポーネントです。

ただ、初期状態では大量のデータをバインドした状態での描画の際、もったりとした動作になってしまいます。

解決法は色々とあるのですが、その中でも特に劇的な改善が見られたのは、ダブルバッファの有効化でした。


ダブルバッファとは、おおまかに言ってしまえば、データを描画する前に一旦メモリ上で表示するデータを展開してから、一気に画面上へ反映させる技術の事です。

ダブルバッファの有効化はいくつかの手段がありますが、その中でも既存のDataGridViewに簡単に適用できる方法が以下のコードとなります。

System.Type dgvtype = typeof(DataGridView);

System.Reflection.PropertyInfo dgvPropertyInfo = 
                                dgvtype.GetProperty("DoubleBuffered",
                                System.Reflection.BindingFlags.Instance |
                                System.Reflection.BindingFlags.NonPublic);

dgvPropertyInfo.SetValue(適用したいDataGridView名, true, null);

これをLoadイベントに書いてあげれば、対象のDataGridViewのダブルバッファが有効となります。

ただし、環境によっては不具合を起こしたりする場合もある事を確認しているので、ケースバイケースとなります。


ダブルバッファで、業務効率化へ。