开发者

iterate text boxes by a for loop

Say I have 10 text boxes and I want to put the same text into each of them. I don't want to write textBoxNum. Text = "hello!" ten times so I might write something like this:

for(int i=1; i<=10; i++)
{
    textBox + i. 开发者_开发技巧Text = "hello!";
}

Obviously, it doesn't work.

How can this be done with a for loop ?


You either need to load all of your textboxes into a list or array structure, and this will allow you to iterate over it.

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

Otherwise, you could inspect the Controls property of your form/container for items of the TextBox type. If the controls could be nested in deeper containers, you might need to recursively explore them (at this point, I would seriously consider an array approach, unless you have some ghastly number of textboxes to load). But as a starting point, you might have

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


You should put your textboxes into an array:

TextBox[] boxes;

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


Like this:

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

Assuming you want to set the text of all textboxes contained on the control\form, but can be modified for more specific scenarios


You could also edit controls only matching something that you want. Here's an example.

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

Also, there is no need to cast the control into TextBox as Control already has the Text property.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜