检查用户控件类型时遇到问题

时间:2018-10-23 15:19:57

标签: vb.net combobox user-controls controls

我有一组要绑定到数据源的组合框。

将有多达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”。

解决这个问题的任何帮助。

1 个答案:

答案 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