将值赋给for循环中的多个对象

时间:2015-01-15 13:26:01

标签: vb.net for-loop while-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循环中浏览所有按钮名称。

2 个答案:

答案 0 :(得分:4)

假设您正在使用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

答案 1 :(得分:0)

您可以使用DirectCast将文本转换为按钮

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