【发布时间】:2019-03-27 21:37:02
【问题描述】:
我有一组要绑定到数据源的组合框。
将有超过 200 个组合框都绑定到同一个源,因此我正在考虑使用循环来遍历表单上的所有控件,找到合适的控件并进行绑定。
这是我目前的代码:
For Each uxControl As UserControl In Me.Controls
If TypeOf (uxControl) Is ComboBox Then
Dim tbControl As ComboBox = DirectCast(uxControl, ComboBox)
If tbControl.Name.StartsWith("cmbDesk") Then
tbControl.DataSource = myDS
tbControl.DisplayMember = "employee_id"
tbControl.ValueMember = "name"
End If
End If
Next
目前除了 SQL 之外没有其他代码来填充 DataSet。 组合框位于标签页中,因此表单上还有其他控件。
目前我收到错误消息:
'System.Windows.Forms.UserControl' 类型的表达式永远不能是 输入“System.Windows.Forms.ComboBox”。
任何帮助解决这个问题。
【问题讨论】:
-
UserControl用于使用 Visual Studio 设计器设计一组控件,而Control是所有控件的基类。如果您只想迭代表单上的所有复选框并且它们不在用户控件中,您的代码应该是:For Each uxControl As Control In Me.Controls。 -
或者更好的是,删除
If TypeOf (uxControl) Is ComboBox Then语句并将循环更改为:For Each cbControl As ComboBox In Me.Controls.OfType(Of ComboBox)。
标签: vb.net combobox user-controls controls