比方说,我有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