VS 2010 VB在窗体上查找控件

时间:2017-03-29 18:30:01

标签: vb.net forms winforms visual-studio-2010

我的女儿有学校的家庭作业,正在制作蛇和梯子游戏,她创建了一个带标签的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

等等。

1 个答案:

答案 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"