表单控件更改为运行时对象VB.net

时间:2017-05-12 06:44:27

标签: vb.net controls

我的表单包含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

有人有解决方案吗?

谢谢

0 个答案:

没有答案