2017-03-29 2 views
0

Ma fille a des devoirs à l'école et fait un jeu de serpents et d'échelles et elle a créé une grille 7 x 7 avec des étiquettes. Quand elle veut définir la position du joueur, elle a plusieurs déclarations et je savais qu'il y avait un moyen plus rapide et plus efficace. Mais il a été ans que je joue avec VS2010VS 2010 VB Trouver le contrôle sur le formulaire

En fait, je pensais que devrait pouvoir faire quelque chose comme ça

Form.FindControl("Label"+player1position).Text = "x" 

au lieu de faire

if player1position = 1 then 
    label1.text = "x" 
end if 
if player1position = 2 then 
    label2.text = "x" 
end if 

et ainsi de suite.

Répondre

0

Bien sûr, en supposant WinForms, vous pouvez faire quelque chose comme:

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 

L'extrait ci-dessus trouver l'étiquette, peu importe la façon dont il est profondément imbriquée, et aussi leur trouver si elles sont dans des récipients différents.

Si les étiquettes sont tous dans le même conteneur , vous pouvez le raccourcir à quelque chose comme:

Me.Controls("Label" + player1position).Text = "x" 

qui trouverait l'étiquette si elle est directement sur le formulaire. Pour un autre conteneur, remplacez "Moi" par le nom, tel que "Panel1":

+0

Merci, c'est une aide précieuse! – Rusty