我的项目中有一些代码,它从数据库中读取数据并将其分配给按钮上的文本。程序中的网格图案中有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循环中浏览所有按钮名称。
答案 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