访问组合框阵列内的组合框属性

时间:2014-07-01 19:48:46

标签: arrays vb.net visual-studio-2010 combobox

我有一组组合框,使用Visual Studio 2010动态添加到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 

     cboList(0).SelectedIndex

因为这些是从数据库中的信息生成的,我存储了他们的名字,X / Y位置等,并且可能在程序运行时的不同时间添加,我可能在0位置没有相同的组合框每一次。我一直试图找到一种方法:

   cbolist("ComboName").Items

在互联网上干涸了。有没有办法在数组中使用组合框名称来查找找到合适的组合框,如果是,如何?

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

1 个答案:

答案 0 :(得分:0)

是的,您需要使用Dictionary(Of String, ComboBox)而不是数组:

Dim cboDictionary as Dictionary(Of String, ComboBox)
Dim cbo As New ComboBox
With cbo
  '...
End With
cboDictionary.Add(cbo.Name, cbo)

请注意,如果您有许多ComboBox,并且它们的数量经常变化,您也可以获得更高的性能。这是因为Dictionary针对此方案进行了优化,lookupaddremove操作在大多数情况下均在 O(1)时间内运行

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