На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Динамическое добавление контролов
    Добрый день.

    Необходимо добавить новый экземпляр контрола рекурсивно внутрь самого себя. Как это сделать?
        Спасибо!
          Пожалуйста.
            А как добавлять контролы в массив контролов? Такое добавление приводит к совпадению имен:
            ExpandedWrap disabled
              Controls.Add("Project1.UserControl1", "UserСontrol11")

            Т.е нужно создать контрол с таким же именем, но другим индексом.
            Сообщение отредактировано: naigs -
              Цитата naigs @
              добавлять контролы в массив контролов

              Во-первых, Вы добавляете не в массив, а в коллекцию Controls.
              Во-вторых, Вы излишне вольно обходитесь с параметрами.
              Цитата naigs @
              нужно создать контрол с таким же именем, но другим индексом

              В коллекции дублирование имён (вернее, ключей) невозможно.
                Цитата Akina @
                Цитата naigs @
                добавлять контролы в массив контролов

                Во-первых, Вы добавляете не в массив, а в коллекцию Controls.
                Во-вторых, Вы излишне вольно обходитесь с параметрами.
                Цитата naigs @
                нужно создать контрол с таким же именем, но другим индексом

                В коллекции дублирование имён (вернее, ключей) невозможно.

                Я понимаю, что я добавляю в коллекцию. Но в коллекции может быть массив контролов, отличаются эти контролы тем, что у них одинаковые имена и определены индексы, именно индексами они и отличаются.
                Сообщение отредактировано: naigs -
                  Цитата naigs @
                  в коллекции может быть массив контролов, отличаются эти контролы тем, что у них одинаковые имена и определены индексы, именно индексами они и отличаются.

                  Вы неверно понимаете, что такое управляющий массив, и каким боком он приторочен.
                  Коллекция контролов - плоская. А управляющий массив - это дополнительная структура, пришитая к коллекции ссылками из свойства Индекс контрола.

                  Создайте форму, положите на неё три контрола (скажем, текстбокса), причём один свободный, а два - с управляющим массивом. Присвойте всем им разные .Text, чтобы различать. Запустите проект. Остановите (скажем, брейком на End Sub в Form_Load). Откройте окно Locals и изучите свойства итемов коллекции Controls формы.
                  Сообщение отредактировано: Akina -
                    Цитата Akina @
                    Цитата naigs @
                    в коллекции может быть массив контролов, отличаются эти контролы тем, что у них одинаковые имена и определены индексы, именно индексами они и отличаются.

                    Вы неверно понимаете, что такое управляющий массив, и каким боком он приторочен.
                    Коллекция контролов - плоская. А управляющий массив - это дополнительная структура, пришитая к коллекции ссылками из свойства Индекс контрола.

                    Создайте форму, положите на неё три контрола (скажем, текстбокса), причём один свободный, а два - с управляющим массивом. Присвойте всем им разные .Text, чтобы различать. Запустите проект. Остановите (скажем, брейком на End Sub в Form_Load). Откройте окно Locals и изучите свойства итемов коллекции Controls формы.

                    Я так и делал. И такие выводы я сделал, когда посомтрел на коллекцию и увидел, что массив хранится также как и все остальные элементы. И у тех элементов которые не в массиве index не определен (в отладчике пишет, что элемент не в массиве), а у тех, кто в массиве Name совпадает, но определены Index.
                      Тогда я вообще не понял, что собсно нужно... по ссылке выше загрузка нового контрола именно в массив через Load описана вполне вменяемо. И даже с примером.
                        Я не заметил метода Load, думал, что только через Add можно добавлять. Спасибо!
                          А можно ли программно создать массив? Load добавляет элементы уже к существующему массиву. Может можно перевести блоки добавленный методом Add в статус массива, но индекс устанавливать он не дает...
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0327 ]   [ 16 queries used ]   [ Generated: 24.04.24, 22:06 GMT ]