在for循环中为多个对象赋值

assigning values to multiple objects in a for loop

我的项目中有一些代码可以从数据库中读取数据并将其分配给按钮上的文本。程序中有 25 个呈网格状排列的按钮。当前的解决方案很乱,并且存在空数据问题。

这是当前的解决方案:

    rs.Read()
    Productbutton1.Text = (rs(0))
    rs.Read()
    Productbutton2.Text = (rs(0))
    rs.Read()
    Productbutton3.Text = (rs(0))
    rs.Read()
    Productbutton4.Text = (rs(0))
    rs.Read()
    Productbutton5.Text = (rs(0))
    rs.Read()
    Productbutton6.Text = (rs(0))
    rs.Read()
    Productbutton7.Text = (rs(0))
    rs.Read()
    Productbutton8.Text = (rs(0))
    rs.Read()
    Productbutton9.Text = (rs(0))
    rs.Read()
    Productbutton10.Text = (rs(0))
    rs.Read()
    Productbutton11.Text = (rs(0))
    rs.Read()
    Productbutton12.Text = (rs(0))
    rs.Read()
    Productbutton13.Text = (rs(0))
    rs.Read()
    Productbutton14.Text = (rs(0))
    rs.Read()
    Productbutton15.Text = (rs(0))
    rs.Read()
    Productbutton16.Text = (rs(0))
    rs.Read()
    Productbutton17.Text = (rs(0))
    rs.Read()
    Productbutton18.Text = (rs(0))
    rs.Read()
    Productbutton19.Text = (rs(0))
    rs.Read()
    Productbutton20.Text = (rs(0))
    rs.Read()
    Productbutton21.Text = (rs(0))
    rs.Read()
    Productbutton22.Text = (rs(0))
    rs.Read()
    Productbutton23.Text = (rs(0))
    rs.Read()
    Productbutton24.Text = (rs(0))
    rs.Read()
    Productbutton25.Text = (rs(0))

我面临的问题是我不能在某种意义上使用 for 循环:

    For i = 1 To 25
        rs.Read()
        Productbutton(i).text = (rs(0))
    Next

因为 Visual basic 不允许我用按钮名称的一部分替换变量。有人告诉我可以这样实现 while 循环:(while rs.Read = true)。但是我不知道如何在 while 循环中遍历所有按钮名称。

假设您正在使用 VB.NET 并假设 Productbutton[1-25] 始终存在,您可以这样做:

For i = 1 To 25
    rs.Read()
    ' Locate the button with the name on the form.
    Dim btn As Button = Me.Controls.Find("Productbutton" & i, True)
    btn.Text = rs(0)
Next

您可以使用 DirectCast 将文本投射到按钮中

For i = 1 To 25
    rs.Read()
    dim newButton = DirectCast(Controls("Productbutton" & i.ToString()), Button)
    newButton.text = (rs(0))
Next