"label" + i.tostring() + ".Text" = "différent commentaire"

Signaler
Messages postés
46
Date d'inscription
mercredi 25 juillet 2012
Statut
Membre
Dernière intervention
12 septembre 2013
-
Messages postés
46
Date d'inscription
mercredi 25 juillet 2012
Statut
Membre
Dernière intervention
12 septembre 2013
-
Bonjour,

Je m'explique, j'ai 7 label nommé "lbJD1" à "lbJD7"
J'ai une ArrayList appellé "Date" avec les 7 commentaires que je dois intégré dans les labels de cette façon là :

lbJD1.Text = Date[0];
lbJD2.Text = Date[1];
//Ect...
lbJD7.Text = Date[6];


J'aimerai pouvoir utiliser cette méthode dans une boucle for de cette facon là :

for(int i = 0 ; i <= 7 ; i++)
{
    string nom = "lbJD" + i.Tostring() + ".Text";
    /*contenu de nom*/ = Date[i];
}


Comment faire ? Est-ce possible ?
Je vous remercie d'avance !

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Possible oui et non

Accéder directement au label comme ça, tu ne pourras pas. Il faut passer par la collection Controls[] de ta form

De mémoire tu dois pouvoir faire un truc du genre :
((label)this.Controls.Find("lbJD" + i.Tostring())).Text = ....



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
La formule exacte serait :

((Label)this.Controls.Find("lbJD" + i.Tostring(), true)[0]).Text = ....;


Attention, ici considère seulement le premier contrôle retourné correspondant au critère de recherche, on considère ce contrôle comme étant un label.

Si aucun contrôle n'est trouvé, ou que celui trouvé ne peut être considéré comme un label, il y aura un exception.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
46
Date d'inscription
mercredi 25 juillet 2012
Statut
Membre
Dernière intervention
12 septembre 2013
1
Okay merci beaucoup, cela m'évite de faire des switch interminable ^^
Messages postés
46
Date d'inscription
mercredi 25 juillet 2012
Statut
Membre
Dernière intervention
12 septembre 2013
1
Et si ce ne sont pas des controls mais des variables
Exemple :

j'ai 7 variable DataTable appellées Temps1 à Temps7.

for(int i = 0 ; i <= 7 ; i++)
{
   Tempsi = "Text";
}


comment je dois faire ?
Messages postés
46
Date d'inscription
mercredi 25 juillet 2012
Statut
Membre
Dernière intervention
12 septembre 2013
1
Correction :

using (SqlCeDataAdapter DTable = new SqlCeDataAdapter("SELECT * FROM Equipes ORDER BY IDeqp", link))
                {
                    
                    for (int i = 1; i <= 7; i++)
                    {
                        DTable.Fill(Tempsi);
                        DTable.Dispose();
                    }
                    
                }
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Pour des variables, c'est pas possible. Il faut que tu regroupe tes variables dans un tableau (ou liste, ou collection ...)


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
46
Date d'inscription
mercredi 25 juillet 2012
Statut
Membre
Dernière intervention
12 septembre 2013
1
Okay merci bien ^^