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
windows7の「エクスプローラーは動作を停止しました」の件
windows7を使用しているとかなりの高確率で「エクスプローラーは動作を停止しました」に当たる。
マイクロソフトの「KB2494427」というhotfixを適用すると大体直るのでメモ。
Windows 7 または Windows Server 2008 R2 でネットワーク検出状態がオンに設定されていると、エクスプローラーがランダムにクラッシュすることがある
メールを入力してダウンロード先アドレスを入手しないといけないので、マイクロソフトのIDが無い人は、ワンタイムメール等でゲットすれば良い。
その他にも原因が違うエラーの場合もあるが、今まで見た「エクスプローラーは動作を停止しました」は、このhotfixで直る事が多かった。
是非試して欲しい。