DataGridViewの処理速度アップ方法
DataGridViewの行または列を削除するプログラムを書くと、その処理の遅さに辟易する。
諸悪の根源は
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
「DataGridViewAutoSizeColumnsMode.DisplayedCells」を使ってもいいんですけど・・・。
処理を早くしようとするとするなら、こんな処理で。
'一旦Noneにして処理を行う
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
// 処理
'復帰
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
しかし、これをするとスクロールバーが一旦短くなってしまうので、表示されているセルがどっかへ行ってしまう。
仕方ないのでスクロールバーの位置を保存して復帰する必要がある
dim sc as integer = 0 dim sr as integer = 0 '一旦Noneにして処理を行う sc = DataGridView1.FirstDisplayedScrollingColumnIndex sr = DataGridView1.FirstDisplayedScrollingRowIndex DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None // 処理 '復帰 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells DataGridView1.FirstDisplayedScrollingColumnIndex = sc + 1 DataGridView1.FirstDisplayedScrollingRowIndex = sr
VB.netってこういう小手先の処理が必要な事が多い。。。
以下も解除しておきましょうw
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing