こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

Visualbasic 2013 でWindows Form アプリを開発しております。

DataGridViewにOracleのテーブルより抽出した結果を
10,000レコードを表示する必要があります。
※DataTableをバインドしてDataGridViewのDataSourceに指定しています。

表示自体は問題なく実装できているのですが、
スクロール時の描画が遅いため実運用では支障がでると考えられます。

スクロール時の描画速度を向上する施策として何か分る方が
いらっしゃいましたらご教授頂けますと幸いです。

現時点では以下のような実装としております。
・DoubleBufferedを有効にしております。
・1レコードごとにデータ妥当性チェックを行っております。
 ※DataTableの全行ループしチェックNGの場合セルの背景色を赤色にしています。

投稿日時 - 2017-09-21 10:24:31

QNo.9377001

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2017-09-23 12:56:35