2012-08-27 61 views
3

我有一個簡單的for循環如下:for循環使用一個對象名稱

for (int i = 0; i > 20; i++) 
{ 

} 

現在我有20個標籤(LABEL1,LABEL2,LABEL3等..)

我想做類似的事:

for (int i = 0; i > 20; i++) 
{ 
    label[i].Text = String.Empty; 
} 

什麼是最簡單的方法來實現這一點?

+6

把標籤放在一個數組中,然後使用你發佈的代碼? – Moritz

+0

_best_將使用描述性名稱而不是'Label123'。 –

+2

label1與標籤[1]不同。 – Paparazzi

回答

14

如果您的標籤被放置在一個容器,說Form,你可以做到以下幾點:

foreach(Label l in this.Controls.OfType<Label>()) 
{ 
    l.Text = string.Empty; 
} 

同樣爲任何其他容器,說,PanelGroupBox,正好與容器的名稱(panel1.Controls等)

2

通過列表創建標籤和循環數組或列表來設置每個標籤

List<Label> labels = new List<Label>(); 
labels.Add(label1); 

foreach(Label l in labels) 
{ 
    l.Text = String.Empty; 
} 
2

我會打電話給你的解決方案設計的缺陷的性質,但我會去這樣的事情:

var itemArray = this.Controls.OfType<Label>(); 

foreach(var item in itemArray) 
{ 
    item.Text = string.Empty; 
} 
0

也許你可以使用的FindControl喜歡的東西

for(int i = 0; i < 5; i++) 
{ 
    (FindControl("txt" + i.ToString())).Text = String.Emty; 
} 
1

不要更換this不知道它是否是最簡單的,儘管它是最短的..

this.Controls.OfType<Label>().ToList().ForEach(lbl => { lbl.Text = String.Empty; }); 
+0

我給你的答案只使用'ForEach' upvote ...仍然習慣了它我自己 – horgh

+0

謝謝,也是我太:) –

相關問題