这是我所做的一段代码,但我想使它更短。
textBox0.Text = array[0];
textBox1.Text = array[1];
textBox2.Text = array[2];
textBox3.Text = array[3];
textBox4.Text = array[4];
....
这就是我想要的:
int a = 0;
for(int N=0; N++; N<5)
textboxN.text = array[a];
a++;
如果文本框有一个共同的容器或父控件,如Panel或GroupBox控件,您可以这样做:
TextBox[] textBoxes = container.Controls.OfType<TextBox>().ToArray();
然后:
for(int N = 0; N < array.Length; N++)
{
textbox[N].Text = array[N];
}
请注意,容器甚至可以是您的表单,但在这种情况下,您必须确保表单上没有其他TextBox控件。这就是为什么像无边界面板这样的东西在这里可能很有用;它为表单提供了一个逻辑部分,以使用户不可见的方式将这些字段分开。
这可以帮助你:
List<TextBox> textBoxes = new List<TextBox>() {textBox0, textBox1, textBox2, textBox3, textBox4 };
for(int i = 0; i < textBoxes.Count; i++)
{
textBoxes[i].Text = array[i];
}
您将文本框放入列表中,然后遍历它们并设置值。下面是一行
textBoxes.Foreach(x => x.Text = array[textBoxes.IndexOf(x)]);
Try This
var textBoxList = new List<Control>();
foreach (var control in this.Controls)
{
if (control.GetType().Name == "TextBox")
{
textBoxList.Add(control as Control);
}
}
textBoxList = textBoxList.OrderBy(t => t.Name).ToList();
for (var i = 0; i < textBoxList.Count; i++)
{
textBoxList[i].Text = array[i];
}
您可以尝试这样做,但如果您有几十个文本框
var maxIndex=array.length;
foreach (var control in this.Controls)
{
var textBox = control as TextBox;
if (textBox != null && textBox.Name.Substring(0,6)=="textBox")
{
int number;
var value = textBox.Name.Substring(7));
var success = int.TryParse(value, out number);
if (success && number < maxIndex))
{
textBox.Text=array[number];
}
}
}