Страницы

Поиск по вопросам

среда, 3 апреля 2019 г.

Переменная в имени другой

Есть несколько textbox'ов: TextBoxTovar1, TextBoxTovar2 и т.д. Хочу пробежать по ним циклом:
for (int i = 0; i < count; i++) { Fill(TextBoxTovar[i].Text); }
конструкция с квадратными скобками не работает. Как правильно записать?


Ответ

В WinForms контролы на форме можно искать по имени:
for (int i = 1; i <= count; i++) { Fill(((TextBox)Controls["TextBoxTovar" + i]).Text); }
будут найдены только тектбоксы, лежащие непосредственно на форме. Если нужно искать во другом контейнере (например, панели) - то нужно использовать свойство Controls этого контейнера, а не свойство формы.
Для WPF аналог Controls[name] это метод FindName у окна или любого другого контейнера:
for (int i = 1; i <= count; i++) { Fill(((TextBox)FindName("TextBoxTovar" + i)).Text); }
FindName работает рекурсивно, так что он найдет не только элементы, лежащие на самой форме, но и элементы во вложенных контейнерах.

Комментариев нет:

Отправить комментарий