Vb.net 在visual basic中创建控件数组

Vb.net 在visual basic中创建控件数组,vb.net,visual-studio-2013,Vb.net,Visual Studio 2013,好的,下面是相关代码: 公共共享组件选择(9)作为组合框 作为文本框的公共共享百分比(9) 私有子MainForm_Load(发送方作为对象,e作为事件参数)处理MyBase.Load Data.LoadComponents(“C:/Users/Jon/Documents/visualstudio 2013/Projects/QuickBlend/QuickBlend/Resources/databaseText.txt”) MsgBox(“已完成加载”) MainForm.compSelect

好的,下面是相关代码:

公共共享组件选择(9)作为组合框
作为文本框的公共共享百分比(9)
私有子MainForm_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
Data.LoadComponents(“C:/Users/Jon/Documents/visualstudio 2013/Projects/QuickBlend/QuickBlend/Resources/databaseText.txt”)
MsgBox(“已完成加载”)
MainForm.compSelect={CompSelect1、CompSelect2、CompSelect3、CompSelect4、CompSelect5、CompSelect6、CompSelect7、CompSelect8、CompSelect9、CompSelect10}
MainForm.compPercent={CompPercent1,CompPercent2,CompPercent3,CompPercent4,CompPercent5,CompPercent6,CompPercent7,CompPercent8,CompPercent9,CompPercent10}
对于MainForm.comp中作为组合框的每个框,选择
box.DataSource=Data.Components
box.DisplayMember=“名称”
对于Data.ComponentNames中的每个comp As字符串
框.项目.添加(公司)
下一个
MsgBox(“循环”)
下一个
MsgBox(“完成的循环”)
端接头

正如你所看到的,我放置了各种MSGBox来查看到底发生了什么。它从不显示“循环”消息框。有谁能解释一下为什么它完全跳过了for循环?我在这方面工作了一段时间,受够了。提前感谢您的帮助!=)

MainForm.compSelect
应该是
Me.compSelect
,因为这是实例(已填充组合框),而不仅仅是尚未填充的对象的完全限定名。

您的问题是,您正在为组合框设置数据源,然后尝试向其中添加项。NET不喜欢这样,只会在没有警告的情况下退出尝试执行此操作的子系统(除非已添加异常处理)。你的代码应该是

Public Shared compSelect(9) As ComboBox
Public Shared compPercent(9) As TextBox
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Data.LoadComponents("C:/Users/Jon/Documents/Visual Studio 2013/Projects/QuickBlend/QuickBlend/QuickBlend/Resources/databaseText.txt")
MsgBox("finished loading")
MainForm.compSelect = {CompSelect1, CompSelect2, CompSelect3, CompSelect4, CompSelect5, CompSelect6, CompSelect7, CompSelect8, CompSelect9, CompSelect10}
MainForm.compPercent = {CompPercent1, CompPercent2, CompPercent3, CompPercent4, CompPercent5, CompPercent6, CompPercent7, CompPercent8, CompPercent9, CompPercent10}
For Each box As ComboBox In MainForm.compSelect
    box.DataSource = Data.Components
    box.DisplayMember = "Name"
    'take this stuff out, it is not needed
    'For Each comp As String In Data.ComponentNames
        'box.Items.Add(comp)
    'Next
    MsgBox("looped")
Next
MsgBox("finished loop")
End Sub

您是否遇到任何异常?请在每个框的
上放置一个断点…
并查看MainForm.compSelect是否有任何项。然后检查Data.ComponentNames。。。sampple代码中没有使用compPercent,为什么要将数据源绑定到组合并将项目添加到组合中?非常感谢。我之所以选择MainForm.compSelect,是因为无论出于何种原因,我认为我是从静态上下文调用compSelect的。由于java的原因,我对静态变量和实例变量有很多经验,但我想,因为它是一种不同的语言,所以我感到困惑。再次感谢!不用担心,每种语言都有其微妙之处。