Top/VB.NET/DataGridViewを高速化する

VB.NET/DataGridViewを高速化する の変更点


#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

ページ新規作成

新しいページはこちらから投稿できます。

TOP