2011-08-24 199 views
2

說我有10個文本框,我想將相同的文本放入其中。我不想寫textBoxNum. Text = "hello!"十倍,所以我可能會寫這樣的事:通過for循環迭代文本框

for(int i=1; i<=10; i++) 
{ 
    textBox + i. Text = "hello!"; 
} 

很顯然,這是行不通的。

這怎麼能用for循環完成?

+0

你應該命名你的文本框。 – SLaks

回答

6

您或者需要將所有文本框加載到列表或數組結構中,並且這將允許您遍歷它。

TextBox[] boxes = { tb1, tb2, tb3, ... }; 

否則,你可以檢查你的表格/容器爲TextBox類型的項目Controls財產。如果控件可以嵌套在更深的容器中,則可能需要遞歸地探索它們(在這一點上,我會認真考慮一種數組方法,除非你有一些可怕的文本框加載)。但作爲一個出發點,你可能有

foreach (var tb in this.Controls.OfType<TextBox>()) 
{ 
    tb.Text = "whatever"; 
} 
3

你應該把你的文本框到一個數組:

TextBox[] boxes; 

public MyForm() { 
    InitializeComponent(); 
    boxes = { someTextBox, otherTextBox, ... }; 
} 
1

像這樣:

foreach (Control c in this.Controls) 
{ 
    if (c is TextBox) 
    { 
     ((TextBox)c).Text = "Hello"; 
    } 
} 

假設你要設置包含在控制\窗體上的所有文本框的文本,但也可以是針對更具體的場景進行了修改

0

您也可以編輯控件只匹配你想要的東西。這是一個例子。

foreach(Control ctrl in Controls) 
    { 
    if (ctrl.Name.StartsWith("TextBoxToEdit")) 
    { 
     ctrl.Text = "Hello!"; 
    } 
    } 

而且,沒有必要投控制到文本框的控制已經擁有Text屬性。

+0

它可能有'Text'屬性,但是你仍然想驗證'if(ctrl是TextBox){}'。任何可以具有以「TextBoxToEdit」開頭的名稱。 –