DataGridView の Column数を増やした時の処理時間増大
- 題名: DataGridView の Column数を増やした時の処理時間増大
- 著者: とくま
- 日時: 2013/02/18 17:57:02
- ID: 31339
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: DataGridView の Column数を増やした時の処理時間増大
- 著者: doyaboh
- 日時: 2013/02/19 12:20:18
- ID: 31340
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: DataGridView の Column数を増やした時の処理時間増大
- 著者: とくま
- 日時: 2013/02/19 14:12:52
- ID: 31341
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
最下記のコードをこちらの環境で実行したところ Column数 起動直後実行秒数(Button1 による 2回目以降秒数) 300 7秒(4) 400 13秒(6) 500 21秒(10) 600 30秒(15) 700 41秒(20) 800 54秒(27) 900 68秒(34) といった結果となりました。 処理時間を速く(5秒以内に)する方法は無いでしょうか? データ数が多いので多少の処理時間は許容するつもりですが、 あまりに時間が掛かる為、改善できる方法は無いかと思い 質問いたしました。 データベースのテーブルであれば、フィールド数が数百というのは 設計に問題ないか考えるべきですが、Grid 系の無料で付属している コントロールが DataGridView であり、Graphics クラスを使った 表現が容易なので、表として利用しようとしています。 しかし、この程度のデータ数でこれほどの時間が掛かっては 使い物になりません。 DataGridView 内部の幅調整などの機能は制限が掛かっても構いません。 とにかくデータを表示するだけの目的で速くしたいです。 何か情報をお持ちの方が居られましたらご協力頂ければと思います。 ' 「FillWeight 値 を合計した最大値が65535を超えている」といった例外が発生に対応 Private Sub dgv_ColumnAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles DataGridView1.ColumnAdded If e.Column.FillWeight <> 10 Then e.Column.FillWeight = 10 End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim dt As New DataTable Dim count As Integer Int32.TryParse(Me.TextBox1.Text, count) With dt.Columns For index As Integer = 0 To count .Add("サンプル" & index.ToString, System.Type.GetType("System.Int32")) Next End With ''row は増やしても0.5秒以内(Columnsは1の時)で表示される 'For index As Integer = 0 To 900 ' dt.Rows.Add(dt.NewRow()) 'Next Dim sTime0 As DateTime = Now Me.DataGridView1.DataSource = dt’←ボトルネック '処理時間を計測 Dim eTime0 As DateTime = Now Me.Label1.Text = eTime0.Subtract(sTime0).TotalSeconds & " 秒かかりました。" End Sub