Arrays VB.NET:将数组动态添加到组合框
有人知道如何在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
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”识别为组合框,它也不会得到控件本身的实例,而是一个字符串。请检查修改后的代码,它适合我。如果这也适用于您-请将此标记为“已回答”,以便其他人可以从中受益。祝你好运