Arrays 将多个数组添加到相应的组合框中

Arrays 将多个数组添加到相应的组合框中,arrays,vb.net,combobox,Arrays,Vb.net,Combobox,我有几个数组名为:Array1,Array2,Array3。。。还有一些组合框名为:cboArray1,cboArray2,cboArray3 如何编写一个通用代码,将每个数组的元素添加到相应的combox中。我知道下面的代码是有效的,但它不是一般的和抽象的 For i = 0 To Array1.Length - 1 cboArray1.Items.Add(Array1(i)) Next For i = 0 To Array2.Length - 1

我有几个数组名为:Array1,Array2,Array3。。。还有一些组合框名为:cboArray1,cboArray2,cboArray3

如何编写一个通用代码,将每个数组的元素添加到相应的combox中。我知道下面的代码是有效的,但它不是一般的和抽象的

For i = 0 To Array1.Length - 1
            cboArray1.Items.Add(Array1(i))
Next
For i = 0 To Array2.Length - 1
            cboArray2.Items.Add(Array2(i))
 Next
...
工作程序可能如下:1。在form(easy)2中查找所有组合框。提取combox(简单)3的名称。从代码(困难)4中查找类似的命名数组

我可以使用其他集合,如列表。。。如果有意义的话。

以下是您使用反射的要求……尽管我不确定这是否真的有用:

Public Class Form1

    Private Array1 As String() = {"cat", "dog", "fish"}
    Private Array2 As String() = {"alpha", "beta", "gamma"}

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

    Private Sub WireComboBoxes(ByVal container As Control)
        For Each ctl As Control In container.Controls
            If TypeOf ctl Is ComboBox AndAlso ctl.Name.ToUpper.StartsWith("CBO") Then
                Dim cb As ComboBox = DirectCast(ctl, ComboBox)
                Dim arrName As String = cb.Name.Substring(3)
                Dim fi As System.Reflection.FieldInfo = Me.GetType.GetField(arrName, Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.IgnoreCase)
                If Not IsNothing(fi) Then
                    cb.DataSource = fi.GetValue(Me)
                End If
            ElseIf ctl.HasChildren Then
                WireComboBoxes(ctl)
            End If
        Next
    End Sub

End Class

它不是一般的和抽象的,因为您正在向特定的组合框添加特定的数据。使用数据源更容易:
cboArray1.datasource=array1
您还可以编写一个方法,该方法接受一个CBO和一个数组(或列表),并将每个元素乏味地复制到items集合谢谢。在这两种情况下,我必须为每对数组组合框重复一个类似的代码。一般来说,我指的是避免这种重复的方法。将来,我可能会添加数组和组合框,我正在寻找一种避免编写新代码的方法。数据源方法可以避免将数据复制到控件。一行代码,我想我明白你说的。让我们假设——过了一会儿——我已经在代码中添加了第100个数组。现在,除了定义该数组之外,我还应该添加另一个类似这样的代码:cboArray100.dataSource=Array100。对于每个新定义的数组,我想省略上面的代码。当然,这是可能的。谢谢你。正如我所预料的那样。此外,我学到了一个新概念:“反思”