0

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

如果我使用的是 vb 6,我将有一个控制数组,并使用索引和我的计数器来显示数据。由于我在 vb.net 中这样做,我无法做到这一点.. 任何解决方案?

4

4 回答 4

6

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

或者,如果您一致地命名控件,则可以在表单Controls集合中按名称找到它们。例如,如果您有三个名为TextBox1TextBox2和的文本框TextBox3,您可以像这样循环它们:

For i As Integer = 1 to 3
    Dim t As TextBox = CType(Me.Controls("TextBox" & i.ToString()), TextBox)
    t.Text = ...
Next
于 2013-02-09T15:09:48.947 回答
2

VB.NET 本身没有控件数组。

但是,您可以创建一个控件数组并将控件分配给数组的每个元素,尽管您也可以使用List(Of Control).

这将允许您遍历集合。

于 2013-02-09T14:32:29.973 回答
1

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

    For i = 0 To Panel1.Controls.Count - 1

        Dim control = Panel1.Controls(i)

        'Do something with control..

    Next
于 2013-02-09T15:02:47.063 回答
1

首先,您为什么不能为此使用网格?- 这将是显而易见的解决方案(因为它在 VB6 中也是如此)。

预计到达时间。. .但如果您必须,此代码段将添加一组标签到您的表单。您将需要对此进行修改,例如将 for next 循环替换为 for each r as mydataset.mytabledatarow in mydataset.mydatable 等

   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
于 2013-02-09T21:18:00.487 回答