повторять текстовые поля с помощью цикла for - PullRequest
2 голосов
/ 24 августа 2011

Скажем, у меня есть 10 текстовых полей, и я хочу поместить один и тот же текст в каждое из них.Я не хочу писать textBoxNum. Text = "hello!" десять раз, поэтому я мог бы написать что-то вроде этого:

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

Очевидно, это не работает.

Как это можно сделать с помощью петли for?

Ответы [ 4 ]

6 голосов
/ 24 августа 2011

Вам нужно либо загрузить все ваши текстовые поля в структуру списка или массива, и это позволит вам перебирать его.

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

В противном случае вы можете проверить свойство Controls вашей формы / контейнера на предмет типа TextBox. Если бы элементы управления могли быть вложены в более глубокие контейнеры, вам, возможно, придется рекурсивно исследовать их (на этом этапе я бы серьезно рассмотрел подход с использованием массива, если у вас нет какого-то ужасного количества текстовых полей для загрузки). Но в качестве отправной точки, вы могли бы иметь

foreach (var tb in this.Controls.OfType<TextBox>())
{
    tb.Text = "whatever";
}
3 голосов
/ 24 августа 2011

Вы должны поместить ваши текстовые поля в массив:

TextBox[] boxes;

public MyForm() {
    InitializeComponent();
    boxes = { someTextBox, otherTextBox, ... };
}
1 голос
/ 24 августа 2011

Как это:

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

Предполагается, что вы хотите задать текст всех текстовых полей, содержащихся в элементе управления \ форме, но его можно изменить для более конкретных сценариев

0 голосов
/ 24 августа 2011

Вы также можете редактировать элементы управления только в соответствии с тем, что вы хотите.Вот пример.

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

Кроме того, нет необходимости приводить элемент управления в TextBox, так как Control уже имеет свойство Text.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...