2010-12-08 32 views
3

i une application windows en C#, sous la forme que j'ai 12 étiquettes avec les nomsC# quel est le chemin de efficent faire ce code - le style php "eval"

label1, label2 , ............... 

j'ai tableau de 12 numéros (après un certain calculate)

comme:

int[] nums = new int[12] {1, 0, 4, 6,.............}; 

je veux assigner en boucle à chaque élément d'étiquette une valeur du tableau Respectivement

quelque chose comme

for (int i = 1; i <= 12; i++) { 
    label+i.Text = nums[i-1].ToString(); 
    } 

ce qui est le moyen efficace de le faire?

grâce

Répondre

7

Créer un tableau correspondant d'étiquettes:

Label[] labels = new Label[12] { label1, label2, ... }; 

for(int i = 0; i < 12; i++) 
{ 
    labels[i].Text = nums[i].ToString(); 
} 
5

Si toutes les étiquettes appartiennent au même contrôle (un groupe par exemple), vous pouvez utiliser la commande find pour effectuer cette mission :

for(int i = 0;i < 12; i++) 
{ 
    Label lbl = myPanel.FindControl("Label" + i.ToString()); 
    lbl.Text = nums[i].ToString(); 
} 
+1

La solution de Bryan est plus efficace. – Amy

+0

@ yodaj007 - Efficace pour les cycles mais pas pour l'espace de stockage. Dans les deux cas, nous parlons de différences de ressources triviales, de sorte qu'il devient plus une question de style de code. Les deux atteignent le même résultat en fin de compte. –

1

Vous pouvez utiliser la méthode FindControl pour localiser un contrôle basé sur le nom:

for (int i = 0; i < nums.Length; i++) { 
    (Form.FindControl("label" + i.ToString()) as Label).Text = nums[i].ToString(); 
}