通过for循环迭代文本框

时间:2011-08-24 14:49:51

标签: c# winforms textbox for-loop

假设我有10个文本框,我想将相同的文本放入每个文本框中。我不想写textBoxNum. Text = "hello!"十次,所以我可能会这样写:

for(int i=1; i<=10; i++)
{
    textBox + i. Text = "hello!";
}

显然,它不起作用。

如何使用for循环完成此操作?

4 个答案:

答案 0 :(得分:6)

您需要将所有文本框加载到列表或数组结构中,这样您就可以迭代它。

TextBox[] boxes = { tb1, tb2, tb3, ... };

否则,您可以检查表单/容器的Controls属性以查找TextBox类型的项目。如果控件可以嵌套在更深的容器中,您可能需要以递归方式探索它们(此时,我会认真考虑一种数组方法,除非您要加载一些可怕的文本框)。但作为一个起点,你可能有

foreach (var tb in this.Controls.OfType<TextBox>())
{
    tb.Text = "whatever";
}

答案 1 :(得分:3)

您应该将文本框放入数组中:

TextBox[] boxes;

public MyForm() {
    InitializeComponent();
    boxes = { someTextBox, otherTextBox, ... };
}

答案 2 :(得分:1)

像这样:

foreach (Control c  in this.Controls)
{
     if (c is TextBox)
     {
         ((TextBox)c).Text = "Hello";
     }
}

假设您要设置控件\表单中包含的所有文本框的文本,但可以针对更具体的场景进行修改

答案 3 :(得分:0)

您还可以编辑仅匹配所需内容的控件。这是一个例子。

foreach(Control ctrl in Controls)
  {
    if (ctrl.Name.StartsWith("TextBoxToEdit"))
    {
      ctrl.Text = "Hello!";
    }
  }

此外,无需将控件转换为TextBox,因为Control已具有Text属性。