• 締切済み

DataGridView スクロール時の描画速度

Visualbasic 2013 でWindows Form アプリを開発しております。 DataGridViewにOracleのテーブルより抽出した結果を 10,000レコードを表示する必要があります。 ※DataTableをバインドしてDataGridViewのDataSourceに指定しています。 表示自体は問題なく実装できているのですが、 スクロール時の描画が遅いため実運用では支障がでると考えられます。 スクロール時の描画速度を向上する施策として何か分る方が いらっしゃいましたらご教授頂けますと幸いです。 現時点では以下のような実装としております。 ・DoubleBufferedを有効にしております。 ・1レコードごとにデータ妥当性チェックを行っております。  ※DataTableの全行ループしチェックNGの場合セルの背景色を赤色にしています。

みんなの回答

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

1万レコードものデータをいきなり表示しようとすれば、遅くなるのは仕方ないでしょう。 なので、データをいきなり表示するのではなく、表示用のバッファ配列(数十件程度)にコピーして表示するのが現実的だと思います。 ボタンを追加するなど表示スコープを動かすための仕掛けも必要です。DataGridViewのスクロールイベントをキャッチして、動的に表示配列を更新すれば、当初のUIとさほど変わらなくなるかもしれません。 ※DoubleBufferedを有効にしていても、件数が1万件ならその1万件のデータを描画しなければならないことに変わりありません。 とここまで書いて、念のためにMSサイトを調べたら、そのものズバリ、 Just-In-Time Data Loading in the Windows Forms DataGridView Control というのがありました。上記手順を作り込んでいるようです。 <ソース> http://msdn.microsoft.com/en-us/library/ms171624.aspx <使用法> http://msdn.microsoft.com/en-us/library/ms171625.aspx

参考URL:
http://msdn.microsoft.com/en-us/library/ms171624.aspx

関連するQ&A