掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コンボボックスに1万件のコレクションを高速に追加するには? (ID:145593)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> DataTable使用で8秒かかってしまっています。 DataTable 法を試してみましたが、当方環境(HP Compaq 2710p)では 3秒強で完了しました。 開始 - 00:00:00 完了 - 00:00:03.1779884 -------------------------------------------------------------------- Private ds As DataSet Private ReadOnly DummyDataCount As Integer = 10000 Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load ds = New DataSet() Dim tbl As DataTable = ds.Tables.Add("サンプル") Dim cols As DataColumnCollection = tbl.Columns cols.Add("商品コード", GetType(Integer)) cols.Add("商品名", GetType(String)) cols.Add("属性項目", GetType(String)) cols.Add("種類", GetType(Integer)) tbl.PrimaryKey = New DataColumn() {cols("商品コード")} BindingSource1.DataSource = ds BindingSource1.DataMember = "サンプル" ComboBox1.DataSource = BindingSource1 ComboBox1.ValueMember = "商品コード" ComboBox1.DisplayMember = "商品名" End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Dim sw As New Stopwatch() Trace.WriteLine("開始 - " & sw.Elapsed.ToString()) sw.Start() BindingSource1.RaiseListChangedEvents = False BindingSource1.SuspendBinding() Dim r As New Random() With ds.Tables("サンプル").Rows For n As Integer = 1 To DummyDataCount .Add(n, "商品" & CStr(n), "属性" & CStr(r.Next()), r.Next(256)) Next End With BindingSource1.RaiseListChangedEvents = True BindingSource1.ResumeBinding() sw.Stop() Trace.WriteLine("完了 - " & sw.Elapsed.ToString()) End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.