Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays VB.NET:将数组动态添加到组合框_Arrays_Vb.net_Combobox_Foreach_Load - Fatal编程技术网

Arrays VB.NET:将数组动态添加到组合框

Arrays VB.NET:将数组动态添加到组合框,arrays,vb.net,combobox,foreach,load,Arrays,Vb.net,Combobox,Foreach,Load,有人知道如何在VB.net中将数组动态添加到一组组合框中吗?我真的需要帮助(我一整天都在为此挣扎)。当我尝试按自己的方式执行时,在表单加载时会出现错误 我的代码: Private Sub Form1_Load(ByVal sender as Object, ByVal e as EventArgs) Handles Me.Load Dim MyArray() as String = {"a","b","c"} For each ctl as ComboBox in Me.Con

有人知道如何在VB.net中将数组动态添加到一组组合框中吗?我真的需要帮助(我一整天都在为此挣扎)。当我尝试按自己的方式执行时,在表单加载时会出现错误

我的代码:

Private Sub Form1_Load(ByVal sender as Object, ByVal e as EventArgs) Handles Me.Load
    Dim MyArray() as String = {"a","b","c"}

    For each ctl as ComboBox in Me.Controls
        if ctl.tag = "yadda" then ctl.Items.AddRange(MyArray)
    Next
End Sub
错误:“无法将“…按钮”类型的对象强制转换为“…组合框”类型。”

我尝试了这么多的代码变体,但我就是无法让它工作。我的应用程序中最终会有将近一百个类似构造的组合框,我希望能够以编程方式初始化它们的项。有人能帮忙吗

谢谢


Elias

这是一种方法:

Public Class Form1

    Function getControl(ByVal controlName As String) As Control
        Dim numCtrls = Me.Controls.Count()
        For I As Integer = 0 To numCtrls - 1
            If Me.Controls.Item(I).Name = controlName Then
                If TypeOf Me.Controls.Item(I) Is ComboBox Then
                    Return CType(Me.Controls(controlName), ComboBox)
                End If
            End If
        Next
    End Function

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim myArray As Array = {"a", "b", "c"}
        Dim myComboBox As ComboBox

        For Each ctl As Control In Me.Controls
            If TypeOf ctl Is ComboBox Then
                If ctl.Tag = "yadda" Then
                    myComboBox = getControl(ctl.Name)
                    myComboBox.Items.AddRange(myArray)
                End If
            End If
        Next

    End Sub

End Class
您循环所有控件(按钮、组合等等),然后检查它是否是您想要的类型(组合框),并执行您需要的任何操作


祝你好运

这是一种方法:

Public Class Form1

    Function getControl(ByVal controlName As String) As Control
        Dim numCtrls = Me.Controls.Count()
        For I As Integer = 0 To numCtrls - 1
            If Me.Controls.Item(I).Name = controlName Then
                If TypeOf Me.Controls.Item(I) Is ComboBox Then
                    Return CType(Me.Controls(controlName), ComboBox)
                End If
            End If
        Next
    End Function

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim myArray As Array = {"a", "b", "c"}
        Dim myComboBox As ComboBox

        For Each ctl As Control In Me.Controls
            If TypeOf ctl Is ComboBox Then
                If ctl.Tag = "yadda" Then
                    myComboBox = getControl(ctl.Name)
                    myComboBox.Items.AddRange(myArray)
                End If
            End If
        Next

    End Sub

End Class
您循环所有控件(按钮、组合等等),然后检查它是否是您想要的类型(组合框),并执行您需要的任何操作


祝你好运

不幸的是,我这样做时会出错。错误:“items”不是“System.Windows.Forms.Control”的成员。我在“控制项”下面有蓝色的曲线。它似乎无法将ctl识别为组合框。程序甚至不能运行。@Elias我的错…:-)您应该将“If TypeOf cntrl Is”更改为“If TypeOf ctl Is”。我已经更新了密码。是的,那不是问题所在。我注意到你最初写这篇文章时有一个小的打字错误。问题是VS2012不会编译代码,因为它不会将“ctl”识别为组合框。我仍然遇到这个问题。@Elias你好,再次抱歉,我的VB.Net我有点生锈了…:-)无论如何,问题是,即使VB将“ctl”识别为组合框,它也不会得到控件本身的实例,而是一个字符串。请检查修改后的代码,它适合我。如果这也适用于您-请将此标记为“已回答”,以便其他人可以从中受益。祝你好运不幸的是,我这样做时会出错。错误:“items”不是“System.Windows.Forms.Control”的成员。我在“控制项”下面有蓝色的曲线。它似乎无法将ctl识别为组合框。程序甚至不能运行。@Elias我的错…:-)您应该将“If TypeOf cntrl Is”更改为“If TypeOf ctl Is”。我已经更新了密码。是的,那不是问题所在。我注意到你最初写这篇文章时有一个小的打字错误。问题是VS2012不会编译代码,因为它不会将“ctl”识别为组合框。我仍然遇到这个问题。@Elias你好,再次抱歉,我的VB.Net我有点生锈了…:-)无论如何,问题是,即使VB将“ctl”识别为组合框,它也不会得到控件本身的实例,而是一个字符串。请检查修改后的代码,它适合我。如果这也适用于您-请将此标记为“已回答”,以便其他人可以从中受益。祝你好运