Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
控件数组vb.net_Vb.net - Fatal编程技术网

控件数组vb.net

控件数组vb.net,vb.net,Vb.net,我正在尝试用VB.net为一个购物系统编写一个程序。它将读取数据库并填充表单上的项目。该应用程序在可滚动的面板内的标签中显示产品名称等信息。我正在创建对象,并在运行时分配文本等值。我正在使用代码的循环 如果我使用的是VB6,我会有一个控件数组,并使用索引和计数器来显示数据。因为我是在vb.net中做这件事的,所以我没有办法做那件事。。有解决方案吗?VB.NET本身没有控件数组 但是,您可以创建控件数组并将控件分配给数组的每个元素,不过也可以使用列表(控件) 这将允许您在集合上循环。VB.NET中

我正在尝试用VB.net为一个购物系统编写一个程序。它将读取数据库并填充表单上的项目。该应用程序在可滚动的面板内的标签中显示产品名称等信息。我正在创建对象,并在运行时分配文本等值。我正在使用代码的循环


如果我使用的是VB6,我会有一个控件数组,并使用索引和计数器来显示数据。因为我是在vb.net中做这件事的,所以我没有办法做那件事。。有解决方案吗?

VB.NET本身没有控件数组

但是,您可以创建控件数组并将控件分配给数组的每个元素,不过也可以使用
列表(控件)


这将允许您在集合上循环。

VB.NET中没有控件数组。但您可以遍历集合。所有控件都在该集合中(如果它们都在同一面板中)


VB.NET不支持控件数组,其意义与VB6相同。不过,你也可以做类似的事情。例如,如果要使用相同的方法处理来自多个控件的事件,可以这样做:

Private Sub MyClickHandler(sender As Object, e As EventArgs) Handles _
    Button1.Click, _
    Button2.Click, _
    Button3.Click

    Dim buttonThatWasClicked As Button = CType(sender, Button)
    ' Do something...
End Sub
Dim myTextBoxes() As TextBox = New TextBox() { TextBox1, TextBox2, TextBox3 }
For i As Integer = 0 to myTextBoxes.Length - 1
    myTextBoxes(i).Text = ...
Next
For i As Integer = 1 to 3
    Dim t As TextBox = CType(Me.Controls("TextBox" & i.ToString()), TextBox)
    t.Text = ...
Next
如果要创建可以循环的控件数组,可以这样做:

Private Sub MyClickHandler(sender As Object, e As EventArgs) Handles _
    Button1.Click, _
    Button2.Click, _
    Button3.Click

    Dim buttonThatWasClicked As Button = CType(sender, Button)
    ' Do something...
End Sub
Dim myTextBoxes() As TextBox = New TextBox() { TextBox1, TextBox2, TextBox3 }
For i As Integer = 0 to myTextBoxes.Length - 1
    myTextBoxes(i).Text = ...
Next
For i As Integer = 1 to 3
    Dim t As TextBox = CType(Me.Controls("TextBox" & i.ToString()), TextBox)
    t.Text = ...
Next
或者,如果一致地命名控件,则可以在表单的
控件
集合中按名称找到它们。例如,如果您有三个名为
TextBox1
TextBox2
TextBox3
的文本框,您可以像这样循环它们:

Private Sub MyClickHandler(sender As Object, e As EventArgs) Handles _
    Button1.Click, _
    Button2.Click, _
    Button3.Click

    Dim buttonThatWasClicked As Button = CType(sender, Button)
    ' Do something...
End Sub
Dim myTextBoxes() As TextBox = New TextBox() { TextBox1, TextBox2, TextBox3 }
For i As Integer = 0 to myTextBoxes.Length - 1
    myTextBoxes(i).Text = ...
Next
For i As Integer = 1 to 3
    Dim t As TextBox = CType(Me.Controls("TextBox" & i.ToString()), TextBox)
    t.Text = ...
Next

首先,您不能使用网格进行此操作的原因是什么这将是显而易见的解决方案(在VB6中也是如此)

预计。但如果必须,此代码段将向表单中添加一组标签。您将需要修改此示例,例如在mydataset.mydatable等中,将for next循环替换为for each r as mydataset.mytabledatarow等

   For i = 1 To 10
        Dim l As New Label
        l.Location = New System.Drawing.Point With {.x = 10, .y = i * 30}
        Me.Controls.Add(l)
        l.Text = "test " & i.ToString
   Next

我只能建议深入研究.NET Framework库。NET比VB6提供的库大得多。你想要的是在那里;它只是命名不同,应该以不同的方式处理。为什么你没有办法做到这一点?VB不再支持数组吗?另一个选项可能是
列表
类:此外,VB.NET与VB6是不同的语言,而不是同一语言的不同版本。的可能副本