分類:[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をバインドする方法はちょっと厳しいです。
|