我有一组组合框,使用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。
答案 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
针对此方案进行了优化,lookup
,add
和remove
操作在大多数情况下均在 O(1)时间内运行
数组没有lookup
功能,因此需要迭代才能找到一个元素,并且需要创建一个新数组来添加或删除一个元素(您使用ReDim
进行操作)。相比之下,Dictionary
每次都会不重新创建自己。