說我有10個文本框,我想將相同的文本放入其中。我不想寫textBoxNum. Text = "hello!"
十倍,所以我可能會寫這樣的事:通過for循環迭代文本框
for(int i=1; i<=10; i++)
{
textBox + i. Text = "hello!";
}
很顯然,這是行不通的。
這怎麼能用for
循環完成?
說我有10個文本框,我想將相同的文本放入其中。我不想寫textBoxNum. Text = "hello!"
十倍,所以我可能會寫這樣的事:通過for循環迭代文本框
for(int i=1; i<=10; i++)
{
textBox + i. Text = "hello!";
}
很顯然,這是行不通的。
這怎麼能用for
循環完成?
您或者需要將所有文本框加載到列表或數組結構中,並且這將允許您遍歷它。
TextBox[] boxes = { tb1, tb2, tb3, ... };
否則,你可以檢查你的表格/容器爲TextBox
類型的項目Controls
財產。如果控件可以嵌套在更深的容器中,則可能需要遞歸地探索它們(在這一點上,我會認真考慮一種數組方法,除非你有一些可怕的文本框加載)。但作爲一個出發點,你可能有
foreach (var tb in this.Controls.OfType<TextBox>())
{
tb.Text = "whatever";
}
你應該把你的文本框到一個數組:
TextBox[] boxes;
public MyForm() {
InitializeComponent();
boxes = { someTextBox, otherTextBox, ... };
}
像這樣:
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = "Hello";
}
}
假設你要設置包含在控制\窗體上的所有文本框的文本,但也可以是針對更具體的場景進行了修改
您也可以編輯控件只匹配你想要的東西。這是一個例子。
foreach(Control ctrl in Controls)
{
if (ctrl.Name.StartsWith("TextBoxToEdit"))
{
ctrl.Text = "Hello!";
}
}
而且,沒有必要投控制到文本框的控制已經擁有Text屬性。
它可能有'Text'屬性,但是你仍然想驗證'if(ctrl是TextBox){}'。任何可以具有以「TextBoxToEdit」開頭的名稱。 –
你應該命名你的文本框。 – SLaks