如何动态更改多个文本框的文本?

  • 本文关键字:文本 何动态 动态 c# forms
  • 更新时间 :
  • 英文 :


这是我所做的一段代码,但我想使它更短。

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];
}
}
}

相关内容

  • 没有找到相关文章

最新更新