我的表单包含CheckedListBox
名为Panel
的约10-15个PanelFilterBoxes
个对象。
每个CheckedListBox
可以包含大量项目(1到最大~2000)。
我必须根据数据表的列唯一值(加上一些额外值)定期重新加载此控件的项目。
现在我有一个这样的代码(下面这只是一个缩短的摘录):
For c = 0 To PanelFilterBoxes.Controls.Count - 1
'--get unique datas from datatable
Dim dtUnique() As String = ....
'--change items of the control
Dim contr As CheckedListBox = PanelFilterBoxes.Controls.Item(c)
contr.Items.Clear()
contr.Items.Add("*All", True)
contr.Items.Add("*Search: ", False)
For Each myValue As String In dtUnique
'--add items with checked true
contr.Items.Add(myValue, True)
Next
Next
时间不长,但需要一些时间。我想尝试一下如果我创建一个运行时对象(我可以将数据放在运行时创建的对象中比表单对象更快),并且"替换"用这个控制表格?
所以我的"重大挑战"我怎么能这样做?
我试过这种方式,但不起作用:/
For c = 0 To PanelFilterBoxes.Controls.Count - 1
'--get unique datas from datatable
Dim dtUnique() As String = ....
'--change items of the control
Dim contr As CheckedListBox = PanelFilterBoxes.Controls.Item(c)
'--runtime temporary object
Dim tempContr As new CheckedListBox
contr.Items.Clear()
tempContr .Items.Add("*All", True)
tempContr .Items.Add("*Search: ", False)
For Each myValue As String In dtUnique
'--add items with checked true
tempContr .Items.Add(myValue, True)
Next
'--1 - this doesn't works, but doesn't produce any error
contr=tempContr
'--2 - it works, but the items aren't checked
contr.Items.AddRange(tempContr.Items)
Next
有人有解决方案吗?
谢谢