Boucle C# [Résolu]

Signaler
-
Messages postés
16041
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2021
-
Bonjour,
J'aurais une question pour mon code j'ai fais un maze et j'aimerais savoir si il a possibilité de mettre des Label déjà fait dans un tableau de label avec leur même nom et leurs possibilité
for (int i =0;i <tLabel.Length; i++)
{
// mettre une boucle pour faire se qu'il a endessous

}
tLabel[0] = label2; tLabel[1] = label3; tLabel[3] = label5; tLabel[2] = label4; tLabel[4] = label6; tLabel[5] = label7; tLabel[6] = label8; tLabel[7] = label9; tLabel[8] = label10;
tLabel[9] = label11; tLabel[10] = label12; tLabel[11] = label13; tLabel[12] = label14; tLabel[13] = label15; tLabel[14] = label16; tLabel[15] = label17; tLabel[16] = label18; tLabel[17] = label19; tLabel[18] = label20;
tLabel[19] = label21; tLabel[20] = label22; tLabel[21] = label23; tLabel[22] = label24; tLabel[23] = label25; tLabel[24] = label26; tLabel[25] = label27; tLabel[26] = label28; tLabel[27] = label29; tLabel[28] = label30;
tLabel[30] = label31; tLabel[31] = label32; tLabel[32] = label33; tLabel[33] = label34; tLabel[34] = label35; tLabel[35] = label36; tLabel[36] = label37; tLabel[37] = label38; tLabel[38] = label39; tLabel[39] = label40;
tLabel[40] = label41; tLabel[41] = label42; tLabel[42] = label43; tLabel[43] = label44; tLabel[44] = label45; tLabel[45] = label46; tLabel[46] = label47; tLabel[47] = label48; tLabel[48] = label49; tLabel[49] = label50;
tLabel[50] = label51; tLabel[51] = label52; tLabel[52] = label53; tLabel[53] = label54; tLabel[54] = label55; tLabel[55] = label56; tLabel[56] = label57; tLabel[57] = label58; tLabel[58] = label59;tLabel[29] = label1;

}

5 réponses

Messages postés
16041
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2021
551
Bonjour

oui c'est possible, mais p'tet que ça n'est pas utile.

Au final tu veux en faire quoi de ton tableau?
Bonjour
Je n'en vois pas trop l'utilité mais c'est plus pour ma curiosité personnel et pour le future ne plus refaire se que j'ai fait avant
et dans mon cas j'ai mis mes label dans mon jeux dans un tableau c'est pour changer la couleur ou la taille mais j'aimerais savoir comment on fais pour les mettre non manuellement si vous voyez se que je veux dire
merci de dire comment faire
J00k4
Messages postés
16041
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2021
551
Ok je vais te montrer, mais je confirme que ça ne sert à rien: les contrôles sont déjà dans des collections...

Pour mon exemple, il y a 7 labels (j'avais pas envie d'en créer 50).
            Label[] lesLabels = new Label[7];

            int i = 0;
            foreach(Label l in this.Controls.OfType<Label>().OrderBy(x => x.Name))//donc la collection Controls contient tous les controles, OffTyp permet d'extraire les labels
            {
                lesLabels[i++] = l; //xn--l-sfa je me contente de les rentrer dans l'ordre alphabétique de leur nom
            }

            //comme tu exemple mets le 2 dans la cellule 0
            foreach (Label l in this.Controls.OfType<Label>().Except(new[] { label1 }))//je boucle sur tous sauf label1
            {
                int numero = Convert.ToInt32(l.Name.Replace("label", ""));//je supprime label du nom et convertit le nombre qui reste.
                lesLabels[numero - 2] = l;
            }
            lesLabels[6] = label1;//pour mettre le premier en dernier....


Maintenant, je te le répète, c'est pas utile.
D'abord il faut nommer les contrôles de façon claire.
Une méthode largement répandue est:
  • 3 minuscules pour le type de control (label => lbl)
  • 1 ou plusieurs mots commençant par une majuscule qui décrivent l'utilité du contrôle.

Par exemple lblCouleurYeux, lblTaille, lblAge, tbxCouleurYeux, tbxTaille, tbxAge.
Là j'ai 6 contrôles, les labels décrivent ce qui est saisi dans les Textbox.

Tu peux donc mettre un mot commun dans tous ceux que tu veux modifier et là tu fais une requête Linq
 this.Controls.OfType<Label>().Where(x => x.Name.Contains("Trucmuche")


Tu peux aussi te servir de la propriété Tag, tu vas faire une requête sur tous les label dont le Tag est "Coucou".

Tu as directement une collection sur laquelle tu peux agir.
je vous remercie beaucoup de votre aide !
Messages postés
16041
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2021
551
de rien