0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
|
1 | |
Получение данных из программно созданных контролов16.02.2017, 11:37. Показов 2466. Ответов 26
Метки нет (Все метки)
1. Получаю запросом из БД в дататейбл данные: "наименование", "тип контрола", "Значение"
2. В цикле для каждого значения программно создаю одину контрол панель, в ней вывожу лейблом "Наименование", создаю в зависимости от типа контрола (полученного запросом) нужный контрол (например текст бокс/чекбокс/комбобокс и т.д.) и вывожу в него "значение" А вот теперь суть вопроса: 3. Существует кнопка "сохранить", при нажатии на которую необходимо получить "значения" каждого из созданного контрола, а затем подставить в запрос эти данные и сохранить обратно в БД. - Помогите с решением для получения данных из программно созданных контролов. Заранее спасибо.
0
|
16.02.2017, 11:37 | |
Ответы с готовыми решениями:
26
Получение данных с программно созданных элементов Получение данных с программно созданных элементов Получение данных от созданных кодом элементов Получение данных из динамически созданных edit ов |
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
||||||
16.02.2017, 12:40 | 2 | |||||
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
|
16.02.2017, 12:59 [ТС] | 3 |
проблема вся в том что контролы, значения которых необходимо получить создаются и объявляются в процедуре, а не глобально, поэтому и не знаю как до них добраться.
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|||||||||||
16.02.2017, 13:16 | 4 | ||||||||||
Сообщение было отмечено laaagz как решение
Решение
Добавлено через 4 минуты если нужно урезать список тестбоксов то создавай их с уникальными именами. Например txtCreate1 и тогда..
Добавлено через 9 минут Извини. Невнимательный. ctl.Name
1
|
69 / 59 / 15
Регистрация: 22.10.2012
Сообщений: 314
|
|||||||||||
16.02.2017, 13:40 | 5 | ||||||||||
а еще лучше глобально объявить лист например
и при создании контрола добавлять его в лист а потом использовать как предложил Hell666
1
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
||||||
16.02.2017, 13:58 | 6 | |||||
вариантов много. Не обязателен ListBox. Часть контролов на форме, часть в панелях... имена разные. И тогда все зависит от фантазии.
Creating Control Arrays in Visual Basic .NET and Visual C# .NET
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
|||||||||||
16.02.2017, 14:12 [ТС] | 7 | ||||||||||
Вариант Hell666 рабочий, единственное что меня смутило, так это количество результатов, слишком много раз прогоняется цикл.
т.е. поясню: у меня в панели, где я ищу контролы, создались 2 контрола(панели), в каждой есть по 1 текстбоксу. И результатом работы предложенного алгоритма будет получение значений 3 раза (см. скриншот)
Если есть другой вариант, то каждому текстбоксу во время создания в цикле присваивается имя
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|||||||||||
16.02.2017, 14:21 | 8 | ||||||||||
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
||||||
16.02.2017, 14:35 | 9 | |||||
Подозреваю что не надо столько for each. Достаточно одно и внутри условие.
Добавлено через 8 минут
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
|
16.02.2017, 14:42 [ТС] | 10 |
он не находит тексбоксы, т.к. там находятся панели, внутри которых он не ищет.
Отсюда и родился у меня второй For Each
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|||||||||||
16.02.2017, 14:54 | 11 | ||||||||||
так... Панели внутри панели? Или что? Обращайся напрямую... Панель1.Панель2.Панель3....Controls В чем не ищет?
Создай в модуле массив
Создавай контролы в модуле как Friends а потом обращайся к ним по индексу как к массиву напрямую из формы.
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
||||||
16.02.2017, 15:00 | 12 | |||||
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|||||||||||
16.02.2017, 15:19 | 13 | ||||||||||
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|
16.02.2017, 16:33 | 14 |
Получение тестбокса созданного программно в панели созданной программно.
Добавлено через 1 час 3 минуты Panel(i) и TextBox(i) объявляются в модуле как Friend переменные и к ним можно обращаться напрямую избегая Panel(i).TextBox(i) Module1.Panel(0) Module1.TextBox(0)...
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
|
16.02.2017, 16:41 [ТС] | 15 |
Пробую через модуль это все провернуть...пока ерроры и пустые значения, хотя дататебл заполнился.
Отпишусь как будет результат. Спасибо за подсказки.
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|||||||||||
16.02.2017, 16:43 | 16 | ||||||||||
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|
16.02.2017, 16:46 | 17 |
Через модуль удобнее всего. Если бы ты дал полный код создания контролов (что в чем и где) может лучше смог бы помочь. А так... Варианты.
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
||||||
16.02.2017, 16:54 [ТС] | 18 | |||||
Я создаю их так, мб и топорно, но так как сумел)
0
|
128 / 53 / 9
Регистрация: 11.02.2017
Сообщений: 265
|
|
16.02.2017, 17:03 | 19 |
Извини. Я вижу где они объявляются, а где добавляются и во что?
0
|
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 24
|
||||||
16.02.2017, 17:08 [ТС] | 20 | |||||
Например тут:
привязываю через Parent к панеле panel_generate_options созданной в дезигнере. она постоянна дальше с другими контролами по аналогии. ну и как результат все создается и отображается так как мне надо, скриншот выше был. т.е. на форме есть панель с названием panel_generate_options. По событию вызываю функцию load_options_from_type() из поста выше. функция генерирует и отрисовывает контролы
0
|
16.02.2017, 17:08 | |
16.02.2017, 17:08 | |
Помогаю со студенческими работами здесь
20
Изменение программно созданных TextBox по событию программно созданного CheckBox Удаление динамически созданных контролов Можно ли обеспечить взаимодействие программно созданных объектов и объектов, созданных мастером Некорректное отображение контролов созданных в редакторе ресурсов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |