我有一组要绑定到数据源的组合框。
将有多达200个ComboBox都绑定到同一源,因此我正在考虑使用循环来遍历表单上的所有控件,找到合适的控件并进行绑定。
这是我到目前为止的代码:
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外,目前没有其他代码可以填充数据集。 组合框位于选项卡页中,因此表单上还有其他控件。
此刻我收到错误消息:
'System.Windows.Forms.UserControl'类型的表达永远不能 键入“ System.Windows.Forms.ComboBox”。
解决这个问题的任何帮助。
答案 0 :(得分:4)
更改
For Each uxControl As UserControl In Me.Controls
到
For Each uxControl As Control In Me.Controls
UserControl
提供了一个空控件,可用于创建其他控件。
就像评论中已经提到的那样,您还可以使用一些LINQ来摆脱该行
If TypeOf (uxControl) Is ComboBox Then
并按如下所示更改For Each
循环:
For Each comboBox As ComboBox In Me.Controls.OfType(Of ComboBox)
If comboBox.Name.StartsWith("cmbDesk") Then
comboBox.DataSource = myDS
comboBox.DisplayMember = "employee_id"
comboBox.ValueMember = "name"
End If
Next