比方說,我有5個texboxes:處理變量
textbox1
textbox2
textbox3
textbox4
textbox5
我想要寫在每個東西。有沒有辦法做到這一點與循環?我正在考慮如下的東西:
for (int i = 1; i < 6; i++)
{
textbox[i].Text = i.ToString();
}
所以我會在每個文本框中得到一個數字。 還是有一種方法有一個文本框的數組?
比方說,我有5個texboxes:處理變量
textbox1
textbox2
textbox3
textbox4
textbox5
我想要寫在每個東西。有沒有辦法做到這一點與循環?我正在考慮如下的東西:
for (int i = 1; i < 6; i++)
{
textbox[i].Text = i.ToString();
}
所以我會在每個文本框中得到一個數字。 還是有一種方法有一個文本框的數組?
考慮使用this.Controls.OfType<TextBox>
,它會給你一個列表,其中包含表格中所有TextBox
。
您還可以通過this.Controls["textbox" + i]
的名稱訪問它們。 (http://msdn.microsoft.com/en-us/library/s1865435.aspx)
this.Controls [「textbox」+ i] 工程就像一個魅力。謝謝! – 2013-04-27 16:37:32
List<Textbox> list = new List<Textbox>() {textbox1, textbox2, textbox3, textbox4, textbox5};
int i = 1;
foreach (var item in list)
{
item.Text = i.ToString();
i++;
}
如果這些文本框5你在這個表單中的所有文本框,你也可以使用;
int i = 1;
foreach(var item in this.Controls.OfType<TextBox>())
{
item.Text = i.ToString();
i++;
}
您應該創建一個'List
@Dirk是的,那是另一種選擇.. – 2013-04-27 16:38:14
Verious選項:
this.Controls.OfType<TextBox>
。靜態選項:
創建靜態數組:
TextBox[] textboxes = new[] { textbox1, textbox2, textbox3, textbox4, ... };
for (int i=0; i < textBoxes.Length; i++)
textboxes[i].text = (i + 1).toString();
動態選項:
static public SetTextBoxIndex(ControlCollection controls, ref int index)
{
foreach(Control c in controls)
{
TextBox textbox = c as TextBox;
if (textbox != null)
textbox.Text =(++index).ToString();
else
SetTextBoxIndex(c.Controls, ref index);
}
}
// Somewhere on your form:
int index = 0;
SetTextBoxIndex(this.Controls, ref index);
創建一個所需大小和文本框引用的文本框數組。在你的情況。
TextBox[] textBoxes = new TextBox[5];
textboxes[0] = textbox1;
textboxes[1] = textbox2;
textboxes[2] = textbox3;
textboxes[3] = textbox4;
textboxes[4] = textbox5;
for (int i = 1; i < 6; i++)
{
textbox[i].Text = i.ToString();
}
希望這會有所幫助。
你說的是WPF還是Winforms? – Matthias 2013-04-27 16:26:26
這是一個Windows窗體應用程序 – 2013-04-27 16:28:43