Arrays 访问组合框数组中的组合框属性

Arrays 访问组合框数组中的组合框属性,arrays,vb.net,visual-studio-2010,combobox,Arrays,Vb.net,Visual Studio 2010,Combobox,我有一个组合框数组,使用VisualStudio2010在VB.Net中动态添加到windows窗体 我想访问cboBox.list和cboBox.selecteditem属性,如果我使用 dim cboList() as ComboBox = {} ReDim Preserve cboList(cboList.Count) Dim location As New System.Drawing.Po

我有一个组合框数组,使用VisualStudio2010在VB.Net中动态添加到windows窗体

我想访问cboBox.list和cboBox.selecteditem属性,如果我使用

                dim cboList() as ComboBox = {}

                ReDim Preserve cboList(cboList.Count)
                Dim location As New System.Drawing.Point(FieldX, FieldY)

                cboList(cboList.Count - 1) = New ComboBox
                With cboList(cboList.Count - 1)
                    .Name = "cboName"
                    .Location = location
                    .Size = Size
                    .TabIndex = 1
                End With
然后我使用

     cboList(0).Items 

因为它们是从数据库中的信息生成的,我在数据库中存储它们的名称、X/Y位置等,并且在程序运行时可能会在不同的时间添加,所以我可能不会每次在0位置都有相同的组合框。我一直在想办法做到这一点:

   cbolist("ComboName").Items
而且在互联网上已经一无所获。是否有方法使用数组中的组合框名称来查找正确的组合框,如果有,如何查找


我正在Visual Studio 10中使用VB.Net Framework 3.5。

是的,您需要使用
字典(字符串、组合框)
而不是数组:

Dim cboDictionary as Dictionary(Of String, ComboBox)
Dim cbo As New ComboBox
With cbo
  '...
End With
cboDictionary.Add(cbo.Name, cbo)
注意,如果您有许多组合框,并且它们的数量经常变化,那么这样做还可以提高性能。这是因为
字典
针对这种情况进行了优化,
查找
添加
删除
操作在大多数情况下都在O(1)时间内运行


数组没有
查找
功能,因此需要迭代才能找到元素,需要创建一个新数组来添加或删除元素(您正在使用
ReDim
)。相比之下,
Dictionary
不会每次都重新创建自己。

我现在正在转换我的数组,如何使用它根据名称访问Dictionary中的组合框?好的,我知道了。谢谢你的帮助。现在我还有一个问题要解决…@bigdadyduergar:不客气!TryGetValue是从字典中检索值的最有效方法。如果你有另一个符合SO格式的问题,可以作为新问题提问。
Dim cboDictionary as Dictionary(Of String, ComboBox)
Dim cbo As New ComboBox
With cbo
  '...
End With
cboDictionary.Add(cbo.Name, cbo)