C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DataGridViewの行挿入が遅い・・・


(過去ログ 54 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■30199 / inTopicNo.1)  DataGridViewの行挿入が遅い・・・
  
□投稿者/ KENT (10回)-(2008/12/19(Fri) 00:08:32)

分類:[C#] 

いつもお世話になっております。

Windows Vista 、C#2008 Express Edition で開発を行っています。

今問題になっているのは、DataGridViewで行を挿入する際の処理速度です。
追加は DataGridView.Rows.Add で直接挿入しています。

で、以下の処理で対応しようと思いました。

《編集時》
this.SuspendLayout()
this.ScrollBars = ScrollBars.None
this.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None

《編集終了後》
this.ScrollBars = 元の状態に戻す
this.ScrollBars = 元の状態に戻す
this.ResumeLayout(true);

処理速度は特に問題ないレベルまで改善できたのですが、また新たな問題が
発生してしまいました。

this.ScrollBars = ScrollBars.None を実行した時に FirstDisplayedScrollingRowIndex 
が先頭行に設定されてしまいスクロールしてしまうのです( ´△`)アァ-

上記の処理を実行する前に FirstDisplayedScrollingRowIndex を対比しておき、
処理終了後に復元したりもしてみましたが、画面がチラついて使い物になりません。

this.ScrollBars = ScrollBars.None した時に先頭行にスクロールされてしまうのを回避する方法
(そんなものは無いような気がするけど・・・)

もしくは、this.ScrollBars = ScrollBars.None にしなくても高速に行を追加できる方法
をご存知の方いらっしゃいましたら、アドバイスお願いします。

ちなみに、行を挿入しながら行の色を変えたり、いろいろとGridをいじる処理があるので、
DataTableをバインドする方法はちょっと厳しいです。

引用返信 編集キー/
■30216 / inTopicNo.2)  Re[1]: DataGridViewの行挿入が遅い・・・
□投稿者/ nori (42回)-(2008/12/19(Fri) 11:02:51)
つ AddRange
でどうでしょうか?
引用返信 編集キー/
■30292 / inTopicNo.3)  Re[2]: DataGridViewの行挿入が遅い・・・
□投稿者/ KENT (11回)-(2008/12/20(Sat) 11:41:38)
No30216 (nori さん) に返信
> つ AddRange
> でどうでしょうか?

いつもありがとうございます。

1行追加するたびに、いろいろと処理をいれているので
(Gridに色を付けたり、もう一つのGridの内容と比較したりなど)
出来れば、修正を少なくして対応出来る方法はないものかと
考えておりました。

やはり、まとめて追加するしかないですよねぇ・・・
うすうすは感じておりました(;^_^A

作りを根本的に考え直したいと思います。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -