Concatenation label + indice

Résolu
km3l3on Messages postés 3 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 1 juin 2010 - 31 mai 2010 à 20:07
km3l3on Messages postés 3 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 1 juin 2010 - 1 juin 2010 à 14:51
Bonjour a tous, je me retrouve a faire un programme dont le visuel contient énormément de labels.
J'aimerai inclure une seule et même action dans une boucle parcourant plusieurs labels.
Voici un exemple que j'ai trouvé sur le net mais qui ne marche pas:

Mes labels s'appellent lbl1, lbl2....et j'en ai 31.

for (int i = 1; i < 31; i++)
              {
                Controls["lbl" + i.ToString()].Text = "toto";  
              }


L'erreur affichée me dit que "lbl" + i.ToString() doit etre de type entier et non pas chaine.

4 réponses

km3l3on Messages postés 3 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 1 juin 2010
1 juin 2010 à 14:51
C'était en effet quelque chose dans ce genre. Je poste la solution
for (int i = 1; i < 31; i++) // parcoure les labels dont les indices sont passés en parametres
{
    foreach (Control c in this.Controls) 
    {
      if (c.Name == "lbl" + i) 
      {
          c.Text = "toto"; 
      }
    }
}   
3
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
1 juin 2010 à 10:14
Bonjour,
Controls attend un nombre et pas une string:
Controls[i] corrigera ton problème.


louis
0
km3l3on Messages postés 3 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 1 juin 2010
1 juin 2010 à 12:45
Problème résolu, merci Louis mais ce n'est pas ça que j'ai du faire.
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
1 juin 2010 à 14:05
Je crois que tu voulais mettre le nom du Controle :
Control[i].name = "lbl"+i.ToString();
Control[i].text = "toto";

louis
0
Rejoignez-nous