TechBox

業務で使えそうな技術を紹介します。

【.NET】DataGridViewの描画が遅い時の対策

DataGridViewの描画が遅い時の対策を紹介します。

100件程度であれば気にならないかと思いますが、
大量の行列がある状態でスクロールをすると、スクロールバーを動かすとビッビッビッみたいな感じで描画がスムーズに表示してくれない(ちらつく)んですね。
その場合の対策ですが【DoubleBuffered】というのを有効にすれば良いです。

protected void Initialize()
{
      //DataGridViewの画面ちらつきをおさえるため、DoubleBufferedを有効にする
      // DataGirdViewのTypeを取得
      System.Type dgvtype = typeof(DataGridView);
      // プロパティ設定の取得
      System.Reflection.PropertyInfo dgvPropertyInfo = dgvtype.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
      // 対象のDataGridViewにtrueをセットする
      dgvPropertyInfo.SetValue(targetDataGridview, true, null);

}

これを実行することで、パッと表示され、スムーズにスクロールすることが確認できました。

以上です。