Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298

Динамическое добавление контрола

28.04.2012, 18:08. Показов 6719. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
создаю динамический контрол и добавляю его на форму.
C#
1
2
TextBox textBox1= new TextBox();
Controls.Add(textBox1);
как должно быть правильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2012, 18:08
Ответы с готовыми решениями:

Добавление контрола динамически
Как правильно динамически добавлять контролы в контент panel1 и прикручивать к ним обработчик события? ...

Динамическое добавление данных
Добрый день! Хочу узнать, как можно реализовать динамическое добавление на WebForms. Вот смотрите, есть база данных SQL с данными,...

Динамическое добавление контролов!
Здравствуйте Уважаемые!Меня интересует вопрос, как при динамическом добавлении контролов, вставить между ними пробел!Извините за может быть...

12
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
29.04.2012, 10:56
Вроде все правильно. Создал контрол и добавил его. Разве что позицию его еще надо задать, если у тебя приложение Windows Forms.
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 12:28  [ТС]
bazile, приложение веб форм (я потому и написал в топике асп.нет)
однако не показывает контрол. мне кажется надо добавить runat=server
но каким образом? в св-х ничего подобного нет. контрол создаю динамечески
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
29.04.2012, 12:33
Цитата Сообщение от californis
bazile, приложение веб форм (я потому и написал в топике асп.нет)
Логично

Цитата Сообщение от californis
однако не показывает контрол. мне кажется надо добавить runat=server
но каким образом? в св-х ничего подобного нет. контрол создаю динамечески
runat=server здесмь ни при чем, этот атрибут нужен только парсеру aspx страниц чтобы отличать серверные контролы.
В каком месте ты делаешь вызов Controls.Add?
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 12:59  [ТС]
Цитата Сообщение от bazile
Цитата Сообщение от californis
bazile, приложение веб форм (я потому и написал в топике асп.нет)
Логично

Цитата Сообщение от californis
однако не показывает контрол. мне кажется надо добавить runat=server
но каким образом? в св-х ничего подобного нет. контрол создаю динамечески
runat=server здесмь ни при чем, этот атрибут нужен только парсеру aspx страниц чтобы отличать серверные контролы.
В каком месте ты делаешь вызов Controls.Add?
в Init.
ругается что должен быть заключен в тег runat...а как его сделать динамечески?
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
29.04.2012, 13:21
Цитата Сообщение от californis
ругается что должен быть заключен в тег runat...а как его сделать динамечески?
Тебе наверняка выдается ошибка вида "Control '_ctl1' of type 'TextBox' must be placed inside a form tag with runat=server". То есть, что TextBox нужно добавлять внутрь серверной формы. Это очевидно не означает что нужно атрибут runat к TextBox добавить!

Для этого надо или уже иметь серверную форму на странице с известным id
C#
1
2
3
4
5
6
7
8
<form id="form1" runat="server">
...
</form>
protected override void OnInit(EventArgs e)
{
    TextBox textBox1 = new TextBox();
    form1.Controls.Add(textBox1);
}
Или нужно создать серверную форму "на лету"
C#
1
2
3
4
5
6
7
protected override void OnInit(EventArgs e)
{
    HtmlForm f = new HtmlForm();
    TextBox textBox1= new TextBox();
    f.Controls.Add(textBox1);
    Controls.Add(f);
}
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 13:30  [ТС]
1. когда я создаю проект у меня уже есть форма, по умолчанию названная Form1
т.е. вот что я вижу:
HTML5
1
2
        <form id="Form1" method="post" runat="server">
        </form>
но при попытке использовать в коде Form1 оно это не понимает.

2.
при использовании варианта

C#
1
2
3
4
HtmlForm f = new HtmlForm();
TextBox textBox1= new TextBox();
f.Controls.Add(textBox1);
Controls.Add(f);
компиляция проходит...но ничего не отображается, хотя visible стоит в true.
и непонятно, эта новая форма f , а что с той Form1 ?
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
29.04.2012, 13:44
Цитата Сообщение от californis
1. когда я создаю проект у меня уже есть форма, по умолчанию названная Form1
т.е. вот что я вижу:
<form id="Form1" method="post" runat="server
</form>
но при попытке использовать в коде Form1 оно это не понимает.
Значит надо объявить переменную нужного типа
protected HtmlForm Form1;

И, californis, учись нормально вопросы формулировать! Под фразой "оно это не понимает" может что угодно скрываться. Пиши ясно кто "не понимает" и что при этом происходит. Например, при компиляции проекта Visual Studio выдает ошибку такую-то.

Цитата Сообщение от californis
2.
при использовании варианта

HtmlForm f = new HtmlForm();
TextBox textBox1= new TextBox();
f.Controls.Add(textBox1);
Controls.Add(f);

компиляция проходит...но ничего не отображается, хотя visible стоит в true.
и непонятно, эта новая форма f , а что с той Form1 ?
Странно. Вообще-то должна была возникнуть ошибка на этапе выполнения, что на странице может быть только одна форма с runat="server". Ладно, не морочь себе пока голову и разберись сначала с первым вариантом.
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 13:57  [ТС]
спасибо bazile, все заработало
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 14:31  [ТС]
bazile, еще такой вопрос.
если делаю на cs - все ок
но на vb.net следующая проблема:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim Form1 As HtmlForm
Dim textbox1 As TextBox
 
Private Sub Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        
        Dim textbox1 As TextBox
 
        textbox1 = New TextBox
        textbox1.ID = "text1"
 
        Form1.Controls.Add(textbox1)
    End Sub
выскакивает сообщение Object reference not set to an instance of an object
странно, но ведь я создал экземпляр объекта...
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
29.04.2012, 14:52
Ошибка скорее относится к строке Form1.Controls.Add(textbox1)
Попробуй добавить к объявлению Dim Form1 As HtmlForm модификатор Protected
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 15:05  [ТС]
да, спасибо. заработало. я объявлял его через private...почему то private не понравилось...
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
29.04.2012, 15:11
При запросе ASPX страницы среда исполнения создает "обертку" вокруг твоего класса в виде класса-наследника. Этот класс выполняет (среди много другого) связывание переменных внутри твоего класса с элементами управления на странице сопоставляя их по id. Этот класс (как и любой другой) не имеет доступа к private переменным родительского класса - отсюда и ошибка.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2012, 15:11
Помогаю со студенческими работами здесь

Динамическое добавление контролов
Клипаю что-то наподобие сайта с новостями. Нужно добавить возможность добавления изображений к контенту с их загрузкой на сервер. Я думаю...

Динамическое добавление HTML
Здравствуйте. Имеется ASPX-страница на AJAX и CS-код. ASPX страница обновляется по таймеру. Раз в минуту вызывается функция, которая...

MasterPage динамическое добавление
Доброго Времени Суток. Вводные: .aspx C# имеется эталонная страница &quot;MasterPage.master.cs&quot; и дочерняя страница содержимого...

Динамическое добавление календаря
Добрый день! По щелчку кнопки добавляю на страницу календарь public partial class admissionOutfits : System.Web.UI.Page { ...

Динамическое добавление видео на страницу
Здравствуйте, уважаемые форумчане. Решил я сделать что-то типа домашнего кинотеатра. Железо есть, веб часть пишу на asp.net. Средствами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru