通过for循环迭代文本框

本文关键字:文本 迭代 循环 for 通过 | 更新日期: 2023-09-27 18:06:44

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

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

显然,它不起作用。

如何用for循环完成这一点?

通过for循环迭代文本框

您需要将所有文本框加载到列表或数组结构中,这将允许您对其进行迭代。

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

否则,您可以检查您的窗体/容器的Controls属性的TextBox类型的项目。如果控件可以嵌套在更深的容器中,您可能需要递归地探索它们(在这一点上,我会认真考虑数组方法,除非您有一些可怕的文本框要加载)。但是作为起始点,您可以使用

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

你应该把你的文本框放到一个数组中:

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

像这样:

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

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

您还可以编辑只匹配您想要的控件。下面是一个例子。

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

也没有必要将控件强制转换为TextBox,因为control已经具有Text属性。