#author("2020-02-26T12:39:08+09:00","","")
#author("2020-02-26T12:40:30+09:00","","")
*DataSourceを使う [#zc9e5a55]
DataGridViewのDataSourceを利用してSQL結果を直接バインドする。
*ダブルバッファリングを使う [#c5a20d14]
ダブルバッファリングを使って表示のちらつき防止を行う。
*記述例 [#r84c9b97]
**記述例 [#d1885ee2]
''' <summary>
''' コントロールのDoubleBufferedプロパティをTrueにする
''' </summary>
''' <param name="control">対象のコントロール</param>
Public Sub EnableDoubleBuffering(control As Control)
control.GetType().InvokeMember(
"DoubleBuffered",
BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty,
Nothing,
control,
New Object() {True})
'https://dobon.net/vb/dotnet/control/doublebuffered.html
End Sub
'データグリッドビューをダブルバッファリングにしてちらつき防止
EnableDoubleBuffering(DataGridView1)
それでも遅い場合は、RowHeadersWidthSizeModeプロパティ値がAutoSizeToAllHeadersになっていないか確認する。
*RowHeadersWidthSizeModeプロパティ [#oa42230c]
それでも遅い場合は、RowHeadersWidthSizeModeプロパティの値がAutoSizeToAllHeadersになっていないか確認する。
なっている場合は、DataSourceにバインドしている間はプロパティ値をEnableResizingに変更しておく。
(AutoSizeToAllHeadersになっていると、一行表示するたびに列幅を自動伸縮させるので遅くなる。)
*記述例 [#i7c744c5]
**記述例 [#p0134639]
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing
DataGridView1.DataSource = result
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders