| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Подстановка имени объекта как переменной. |
| Автор: Colloseum 30.8.2006, 19:56 |
| Значит в одном табе порядка 40 label'ов textBox'ов с именами label1, label2 ... label40 и textBox1, textBox2 ... textBox40. Имеются текстовые массивы разной длины на основании которых необходимо присвоить названия label'ам, а заодно скрыть ненужные label'ы и textBox'ы. Так вот хочу чтоб это не вручную прописывать, а например циклом на основании длины массива подписать леблы. Такая себе динамическая форма. Такое вообще возможно, чето мне кажется что нет, но может другие варианты есть. |
| Автор: marcusmae 30.8.2006, 20:11 | ||||
Возможно. У любого панельного контрола ( в т.ч. у TabPage ) есть коллекция контролов, которые на нём содержатся.
Так что, Вы можете в цикле прогуляться по всем элементам Controls[] и присвоить их свойствам нужные значения. Естественно, чтобы добраться до специфических свойств, нужно будет явно приводить к label или к textbox :
|
| Автор: threef 31.8.2006, 19:16 | ||
Лучше было бы все эти контролы создать самому, если уж их так много, заодно и определить их параметры. Сомнительное удовольствие размещать 40 текстбоксов. Соответствено контролы можно содержать в своей собссной коллекции со всеми вытекающими...
|
| Автор: marcusmae 31.8.2006, 19:52 |
| threef, во-первых, динамическое добавление контролов в форму - это прекрасно, но иногда изменившиеся размеры экранных шрифтов очень сильно всё портят : текст не вмещается в место для лабела, соседний контрол налезает и т.п. проблемы. Переносимость форм, нарисованных в дизайнере в этом смысле лучше, потому что там размеры подстраиваются (сделать это ручками куда сложнее, чем в те две строчки, что ты привёл). во-вторых, коллекции контролов - это коллекции объектов, а не ссылок на них. То есть, если контрол из одной коллекции был добавлен в коллекцию другой панели, то из первой он пропадает. |