Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подстановка имени объекта как переменной. Как перебрать отдельные объекты. 
:(
    Опции темы
Colloseum
Дата 30.8.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



Значит в одном табе порядка 40 label'ов textBox'ов с именами label1, label2 ... label40 и textBox1, textBox2 ... textBox40.
Имеются текстовые массивы разной длины на основании которых необходимо присвоить названия label'ам, а заодно скрыть ненужные label'ы и textBox'ы.

Так вот хочу чтоб это не вручную прописывать, а например циклом на основании длины массива подписать леблы. Такая себе динамическая форма.

Такое вообще возможно, чето мне кажется что нет, но может другие варианты есть.
PM MAIL   Вверх
marcusmae
Дата 30.8.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 3
Всего: 39



Возможно. У любого панельного контрола ( в т.ч. у TabPage ) есть коллекция контролов, которые на нём содержатся.

Код

tabPage.Controls[...] //индексация по номеру или имени контрола


Так что, Вы можете в цикле прогуляться по всем элементам Controls[] и присвоить их свойствам нужные значения. Естественно, чтобы добраться до специфических свойств, нужно будет явно приводить к label или к textbox :

Код

Label label3 = (Label)tabPage.Controls[2];


Это сообщение отредактировал(а) marcusmae - 30.8.2006, 20:18


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
threef
Дата 31.8.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: нет
Всего: 10



Лучше было бы все эти контролы создать самому, если уж их так много, заодно и определить их параметры. Сомнительное удовольствие размещать 40 текстбоксов. Соответствено контролы можно содержать в своей собссной коллекции со всеми вытекающими...
Код

TextBox [] Editors=new TextBox[4];
for(int i =0;i<Editors.Length;i++)
    {
      Editors[i]=new TextBox();
      Editors[i].Location=new Point(10+150*i,10);
      ...
     }

PM MAIL   Вверх
marcusmae
Дата 31.8.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 3
Всего: 39



threef,

во-первых, динамическое добавление контролов в форму - это прекрасно, но иногда изменившиеся размеры экранных шрифтов очень сильно всё портят : текст не вмещается в место для лабела, соседний контрол налезает и т.п. проблемы. Переносимость форм, нарисованных в дизайнере в этом смысле лучше, потому что там размеры подстраиваются (сделать это ручками куда сложнее, чем в те две строчки, что ты привёл).

во-вторых, коллекции контролов - это коллекции объектов, а не ссылок на них. То есть, если контрол из одной коллекции был добавлен в коллекцию другой панели, то из первой он пропадает.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
mr.DUDA
Дата 2.9.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(marcusmae @  31.8.2006,  19:52 Найти цитируемый пост)
во-вторых, коллекции контролов - это коллекции объектов, а не ссылок на них. То есть, если контрол из одной коллекции был добавлен в коллекцию другой панели, то из первой он пропадает.

Добавлю, это у Controls так специально сделано, чтобы одно окно нельзя было делать child-ом у нескольких parent-ов, т.к. винда этого не позволяет.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.