我的表单上有大约15个组合框,所有这些组合框都是从表中提取的相同信息(约150个条目)。目前我从表中获取信息,然后循环访问条目并将它们添加到每个文本框中。我想知道是否有更有效的方法来加载这些组合框,然后必须将表条目单独添加到每个组合框中,必须在For循环中列出15行代码。
我没有看到任何性能问题,但我认为我可能会以最有效的方式工作,而不是坚持使用有效的方法。 :)
答案 0 :(得分:5)
您可以创建组合框列表,然后循环浏览它们。例如:
Dim cbos() As ComboBox = {ComboBox1, ComboBox2, ComboBox3}
For Each cbo As ComboBox In cbos
' Load cbo from table
Next
或者,如果它们的名称一致,您可以按名称找到组合框:
For i As Integer = 1 to 15
Dim cbo As ComboBox = DirectCast(Controls("ComboBox" & i.ToString())), ComboBox)
' Load cbo from table
Next
答案 1 :(得分:2)
由于Combobox项目是一个集合,如果它们的元素相同,您可以使用要插入的对象构建数组,然后使用方法{将此数组插入每个ComboBox {1}}(这是一种存在于Combobox.items中的方法)。
从MSDN获取示例:
AddRange()
然后你只需要做一个循环就可以将数组添加到每个ComboBox中。当然,您需要首先自己构建数组,而不是示例中的简单字符串数组。
参考:
答案 2 :(得分:2)
你也可以这样做,因为你提到你已经有了一张桌子。
将表对象更改为数据表,这将有助于绑定到组合框。如果您也将数据表添加到数据集中可能会有所帮助。这样,您可以将所有ComboBox(它们是允许用户查看信息的UI元素)附加到数据集中相同的 DataSource (数据表)。
现在您需要做的就是遍历所有组合框并将数据源设置为同一个表,即如果您决定以编程方式执行此操作:
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.ValueMember = "au_id"
ComboBox1.DisplayMember = "au_lname"
使用上面的示例进一步了解此问题here
然后,您还可以使用ComboBox1.selectedValue
获取用户选择的值。
另一方面,如果您使用C#WPF执行此操作,您可以直接绑定XAML中的每个comboBox,我不确定这是否可以在VB.net中完成,因为我试图查找该选项但是没有管理这样做,你可能想尝试一下。
一些非常有用的数据绑定教程和指南,您可能会对此感兴趣:
〜表示您的问题的推荐阅读
DotNetPerls on DataGridView(请注意,这不是组合框,仅显示值)
〜 VBNet DataTable Usage from DotNetPerls(这与1相关。)