Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > VB .NET > Создание объектов |
Автор: YoD 30.11.2004, 20:30 |
Люди, подскажите пожалуйста. Мне надо на форме создать нечто вроде таблицы из image boxes. Вроде всё просто, но в VB. NET убрали мою любимую возможность - создание массивов элементов управления. Кто знает, как программно создать много image boxes на фореме (много это порядка 100) и как ими потом управлять. Буду очень благодарен за все советы |
Автор: -Mikle- 1.12.2004, 01:11 | ||||
Не убрали, а скорее усовершенствовали ![]() ![]() Короче вот код на примере массива PictureBox'ов. Ниже написанное засовываем в класс формы.
Пробуй, будут вопросы по этой теме, пиши сюда. Вопросы по другой теме, просьба создавать в новом топике. |
Автор: Гость_Папа 12.11.2005, 15:17 |
-Mikle- Приветствую. Вопрос новичка по выше приведенному коду. Поясни что означает или что происходит в результате выполнения этой строки ReDim Preserve pics(i) Заранее спасибо. |
Автор: Exception 12.11.2005, 15:57 |
она увеличивает количество элементов массиве. |
Автор: Гость_Папа 13.11.2005, 00:42 | ||
Run-time error Спасибо. Но я не совсем понял смысл. Я бы выполнил это так ( пример размещения на форме 40 label )
Впрочем Mikle это и так написал. Только в чем фишка AddRange вместо Add просто? Если можно то вопрос по обработчику событий Click. Как сделать: кликнули по первому контролу он стал невидимым Visible = Fals, кликнули по второму он тоже стал невидимым, а потом если кликнуть по третьему (или через промежуток времени) то первый опять становится видимым. Есть возможность через IndexOf определить индекс контрола и потом с его помощью управлять контролом дальше. Но у меня что-то не получается. И потом никак не могу придумать как отследить первый и второй клик. Ведь когда кликнули по второму контролу клик номер два, но после клика по третьему клик номер два должен стать кликом номер один, а новый(третий) номером два. Плюс должен сохраняться индекс контрола, чтобы потом его сделать видимым. Run-time error Был бы очень признателен за помощь. Я тут уже несколько дней мучаюсь. По идее при каждом клике должен быть разный индекс контрола. А у меня почемуто часто выскакивает один и тот же. Использую это выражение для определения индекса контрола по которому кликнули: nrT = Me.Controls.IndexOf(sender) ЗЫ модератор простите, если что нарушил. Всего доброго. ![]() |
Автор: thicking 6.4.2009, 20:53 |
Это все хорошо, но я столкнулся с такой проблемой. У меня на форме имеется Controlbox, в котором находятся35 textbox'ов. Мне нужно при загрузке формы, чтобы все textbox'ы были недоступны, а при нажатии на кнопку (назовем ее "редактировать") они разблокировались. Делал как написано во 2 посте и постоянно получаю пустой массив. Если убрать маску и взять все элементы на форме, то видно что контролы находящиеся внутри Controlbox'а просто игнорируются. Пробовал экспериментировать с Controlbox, но результатов не получил. Очень надеюсь на вашу помощь. |
Автор: Rififi 6.4.2009, 22:26 |
создай сначала Panel (программно или в дизайне), а уже к ней цепляй свои textbox'ы для блокирования/разблокирования this.panel1.Enabled = true; // или false ps. что в коде не смотрел (не люблю vb (: ) поэтому ответил как понял вопрос. |
Автор: thicking 6.4.2009, 22:55 |
т.е. в Controlbox вставляю панель, а в панель все остальное... Я правильно понял? |
Автор: -Mikle- 7.4.2009, 08:04 |
Что такое Controlbox? Это панель? или контейнер? Такого компонента нет в VB... |
Автор: thicking 7.4.2009, 08:58 | ||
Признаю, мой косяк. Не ControlBox, а TabControl |
Автор: -Mikle- 7.4.2009, 10:01 |
Да, тогда так: Если ты потом у панели выставишь свойство Enabled = False, то все расположенные на нем контролы станут неактивными. |
Автор: thicking 7.4.2009, 10:51 |
Так и сделаю, но вопрос все равно остается открытым, так как потом еще все это нужно будет заполнить данными, а тупо описывать каждый textbox с новой строчки очень не удобно |
Автор: thicking 7.4.2009, 13:29 | ||
Сделал примерно так:
|