2010-09-22 6 views
0

Disons que jeMettre des étiquettes WinForm dans un tableau?

Label1 
Label2 
Label3 

Je veux faire quelque chose comme:

for(int i=0;i<3;i++) 
{ 
    LabelArray[i].Text = "weee!"; 
} 

Pour remplir le tableau, je sais que je peux faire quelque chose comme:

LabelArray[0] = Label1; 
LabelArray[1] = Label2; 
LabelArray[2] = Label3; 

Mais ce doesn Ne semblez pas intelligent juste parce que j'ai 50 étiquettes, et ce serait 50 lignes idiotes de code.

Y a-t-il une meilleure façon de procéder?

Merci!

Répondre

2

Vous devez parcourir Form.Controls[] pour rechercher des étiquettes.

foreach (var control in this.Controls) 
{ 
    if (control is Lable) 
     labelList.Add((Lable)control)); 
} 
0

Si vous créez des étiquettes par programmation, vous pouvez créer l'étiquette et définir le texte à l'intérieur de la boucle for, puis l'ajouter à la collection Controls de formulaires.

Si vous ajoutez 50 étiquettes au moment de la conception afin qu'elles obtiennent 50 noms individuels, je ne connais pas de meilleure solution.

Si vous souhaitez définir le texte de toutes les étiquettes, vous pouvez également itérer la collection Controls de votre formulaire et vérifier si elles sont de type Label et, le cas échéant, définir leur propriété de texte.

0

Vous avez deux options:

  • utiliser la réflexion pour obtenir les étiquettes, par exemple

    for (int i = 0; i < 50; i++) 
        labelArray[i] = (Label)GetType().GetField("Label" + (i+1)).GetValue(this); 
    
  • Ne pas utiliser le concepteur WinForms pour créer les 50 étiquettes, mais les créer dynamiquement et les mettre directement dans le tableau en premier lieu.

+0

Votre code de réflexion ne fonctionne pas, mais je ne sais pas comment le réparer. Plus précisément "GetType()" et "this" sont marqués pour les erreurs. – sooprise

+0

Ok, ces erreurs semblent provenir du fait que le code est à l'intérieur d'une méthode statique .... – sooprise

+0

@Soo: Correct. Si l'ensemble d'étiquettes ne change jamais pendant l'exécution, vous pouvez le mettre dans le constructeur de votre formulaire, par exemple. – Timwi

Questions connexes