Как эффективный способ сделать этот код - стиль PHP "Eval" - PullRequest
3 голосов
/ 08 декабря 2010

У меня есть приложение для Windows на C #, в форме у меня есть 12 меток с именами

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

У меня есть массив из 12 чисел (после некоторых вычислений)

как:

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

я хочу в цикле назначить каждому элементу метки значение из массива. Соответственно

что-то вроде

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

Каков эффективный способ сделать это?

спасибо

Ответы [ 3 ]

7 голосов
/ 08 декабря 2010

Создать соответствующий массив меток:

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

for(int i = 0; i < 12; i++)
{
    labels[i].Text = nums[i].ToString();
}
5 голосов
/ 08 декабря 2010

Если все метки принадлежат одному и тому же элементу управления (например, Panel), вы можете использовать элемент управления find для выполнения этого назначения:

for(int i = 0;i < 12; i++)
{
    Label lbl = myPanel.FindControl("Label" + i.ToString());
    lbl.Text = nums[i].ToString();
}
1 голос
/ 08 декабря 2010

Вы можете использовать метод FindControl, чтобы найти элемент управления на основе имени:

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