Arrays 访问组合框数组中的组合框属性
我有一个组合框数组,使用VisualStudio2010在VB.Net中动态添加到windows窗体 我想访问cboBox.list和cboBox.selecteditem属性,如果我使用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
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)