【发布时间】:2021-12-24 23:58:59
【问题描述】:
我有一个包含五个组合框的表单,每个组合框都添加了相同的数据表,这个数据表是根据从 XML 文件中提取的数据创建的。一切正常,但是,表单需要几秒钟才能加载,并且我已经跟踪代码中最慢的部分是 ComboBox.DataSource = DataTable 的最后一部分。有谁知道为什么需要这么长时间?
Dim GuideDataTable As New DataTable
GuideDataTable.Columns.Add ("Text", GetType (String))
GuideDataTable.Columns.Add ("Index", GetType (Integer))
GuideDataTable.Rows.Add ("", 0)
For ItemIndex = 1 To CountNodes("guidecomponents")
GuideDataTable.Rows.Add(ReadNode("guidecomponents", "name", "index", ItemIndex), ItemIndex)
Next
GuideDataTable.DefaultView.Sort = "Text"
GuideDataTable = GuideDataTable.DefaultView.ToTable
GuideComboBox1.DisplayMember = "Text"
GuideComboBox1.ValueMember = "Index"
GuideComboBox2.DisplayMember = "Text"
GuideComboBox2.ValueMember = "Index"
GuideComboBox3.DisplayMember = "Text"
GuideComboBox3.ValueMember = "Index"
GuideComboBox4.DisplayMember = "Text"
GuideComboBox4.ValueMember = "Index"
GuideComboBox5.DisplayMember = "Text"
GuideComboBox5.ValueMember = "Index"
GuideComboBox1.BindingContext = New BindingContext
GuideComboBox2.BindingContext = New BindingContext
GuideComboBox3.BindingContext = New BindingContext
GuideComboBox4.BindingContext = New BindingContext
GuideComboBox5.BindingContext = New BindingContext
GuideComboBox1.DataSource = GuideDataTable
GuideComboBox2.DataSource = GuideDataTable
GuideComboBox3.DataSource = GuideDataTable
GuideComboBox4.DataSource = GuideDataTable
GuideComboBox5.DataSource = GuideDataTable
【问题讨论】:
-
数据表大概有多少行?
-
这里我没有使用
BindingContext。 -
我并没有低估这里的某些东西...如果您有五 (5) 个组合框,并且所有五 (5) 个组合框都有“相同”
DataSourceGuideDataTable... 那么...所有组合框将“始终”反映“相同选择”值。如果您在GuideComboBox1... 中选择第 2 项,那么所有组合框 (1-5) 现在都将第 2 项作为选定项。这适用于任何组合框更改......即所有组合框总是有“相同的选择”项。如果您打算让所有组合框始终包含相同的“选定”值,那么为什么要五个组合框?为什么不是一个组合框? -
如果您希望每个组合框包含相同的值但“独立”工作,那么您需要为每个组合框“复制”或“创建”一个新的
DataSource。抱歉,如果我遗漏了什么。 -
谢谢大家。目前有 29 行从 XML 文件添加到数据表中(它可能会增长,但不会增长太多)。