- - PR -
DataGridViewは遅い
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-02-07 17:15
こんにちは。
DataGridViewを使って、得意先コード検索画面を作っています。 DataGridViewは簡単に2行表示できない為 取得したDataTableをLOOPさせ、項目を改行コードで付けて DataGridViewにセットしました。 For Each ROW As DataRow In DataTable.Rows DataGridView.Rows.Add(ROW("項目1"), ROW("項目2") & Chr(13) & ROW("項目3")) Next とし、プロパティを行の高さを変更するなど設定しました。 DataGridViewのプロパティを設定すると5000件のデータで30秒、 1万件だと1分もかかってしまいます。 プロパティを設定しないと5秒ほどです。 下記がDataGridViewのプロパティの内容です。 With DataGridView .AllowUserToResizeColumns = False .AllowUserToResizeRows = False .AllowUserToAddRows = False .ReadOnly = True ' .MultiSelect = False .SelectionMode = DataGridViewSelectionMode.FullRowSelect ' .CellBorderStyle = DataGridViewCellBorderStyle.Single .DefaultCellStyle.WrapMode = DataGridViewTriState.True .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders End With この中でAutoSizeRowsMode を設定しているから 遅いみたいです。 2行表示させたい為、設定しているのですが スピードの件は、諦めるしかないでしょうか? | ||||
|
投稿日時: 2008-02-07 18:27
AllCellsExceptHeadersを設定すると、
各行毎に、各セルの必要な高さを求めて、最適な高さを設定する為 行数及び列数が増えるにつれ、処理が重くなります。 各行が一定の高さであるならば、RowTemplate.Heightにて高さ指定すれば 少しはましになると思います。 もっと速くするには、DataGridView.Rows.Addを使用せずに下記の様にしてください。
【サンプルコード記述ミス修正】 [ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-07 18:29 ] 【追記】 提示サンプルコードは、各行毎に高さを変えたい時に特に有効かと思います。 [ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-07 18:43 ] | ||||
|
投稿日時: 2008-02-08 01:26
画面上に表示されていない行は高さを変えないという手もありますよ。
DataGridViewの仮想モードについて調べてみるといいと思います。 手間は色々多いですけど。 | ||||
|
投稿日時: 2008-02-08 10:57
ありがとうございます。
RowTemplate.Heightにて 対応して5000件のデータで4秒になりました。 |
1