#c_sharp #wpf
Есть несколько textbox'ов: TextBoxTovar1, TextBoxTovar2 и т.д. Хочу пробежать по ним циклом: for (int i = 0; i < count; i++) { Fill(TextBoxTovar[i].Text); } конструкция с квадратными скобками не работает. Как правильно записать?
Ответы
Ответ 1
В 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 работает рекурсивно, так что он найдет не только элементы, лежащие на самой форме, но и элементы во вложенных контейнерах.Ответ 2
Очень странный вопрос. Без костыля тут не обойтись думаю. Но можно и при помощи Linq: foreach (TextBox tb in Controls.Cast().Where(x => x is TextBox).Select(x=>x as TextBox)){ // do something } Данный код переберет все TextBoxв форме. Надеюсь поможет. P.S если выберите этот вариант поиска, смогу более подробно рассказать/объяснить что к чему.
Комментариев нет:
Отправить комментарий