我的女儿有学校的家庭作业,正在制作蛇和梯子游戏,她创建了一个带标签的7 x 7网格。当她想设置玩家的位置时,她有多个if语句,我知道有更快更有效的方法。但是自从我玩VS2010以来已经有好几年了
基本上我认为应该可以做这样的事情
Form.FindControl("Label"+player1position).Text = "x"
而不是
if player1position = 1 then
label1.text = "x"
end if
if player1position = 2 then
label2.text = "x"
end if
等等。
答案 0 :(得分:0)
当然,假设WinForms,您可以执行以下操作:
Dim matches() As Control = Me.Controls.Find("Label" + player1position, True)
If matches.Length > 0 AndAlso TypeOf matches(0) Is Label Then
Dim lbl As Label = DirectCast(matches(0), Label)
lbl.Text = "x"
End If
上面的代码片段无论嵌套有多深,都会找到它,如果它们位于不同的容器中,也会找到它们。
如果标签全部在同一容器中,那么您可以将其缩短为:
Me.Controls("Label" + player1position).Text = "x"
如果直接在表格上,那将找到标签。对于不同的容器,请更换" Me"使用名称,例如" Panel1":
Panel1.Controls("Label" + player1position).Text = "x"