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

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

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

Author24 — интернет-сервис помощи студентам
создаю динамический контрол и добавляю его на форму.
C#
1
2
TextBox textBox1= new TextBox();
Controls.Add(textBox1);
как должно быть правильно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2012, 18:08
Ответы с готовыми решениями:

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

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

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

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

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

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

Цитата Сообщение от californis
однако не показывает контрол. мне кажется надо добавить runat=server
но каким образом? в св-х ничего подобного нет. контрол создаю динамечески
runat=server здесмь ни при чем, этот атрибут нужен только парсеру aspx страниц чтобы отличать серверные контролы.
В каком месте ты делаешь вызов Controls.Add?
в Init.
ругается что должен быть заключен в тег runat...а как его сделать динамечески?
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
29.04.2012, 13:21 6
Цитата Сообщение от 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  [ТС] 7
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
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
29.04.2012, 13:44 8
Цитата Сообщение от 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  [ТС] 9
спасибо bazile, все заработало
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 14:31  [ТС] 10
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
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
29.04.2012, 14:52 11
Ошибка скорее относится к строке Form1.Controls.Add(textbox1)
Попробуй добавить к объявлению Dim Form1 As HtmlForm модификатор Protected
0
0 / 0 / 1
Регистрация: 28.09.2008
Сообщений: 298
29.04.2012, 15:05  [ТС] 12
да, спасибо. заработало. я объявлял его через private...почему то private не понравилось...
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
29.04.2012, 15:11 13
При запросе ASPX страницы среда исполнения создает "обертку" вокруг твоего класса в виде класса-наследника. Этот класс выполняет (среди много другого) связывание переменных внутри твоего класса с элементами управления на странице сопоставляя их по id. Этот класс (как и любой другой) не имеет доступа к private переменным родительского класса - отсюда и ошибка.
1
29.04.2012, 15:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2012, 15:11
Помогаю со студенческими работами здесь

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

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

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

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

Динамическое добавление html кода
Здравствуйте. Возник вопрос как в asp.net можно динамически добавлять html код на страницу к...

Динамическое добавление элементов формы
Есть что-то аля: &lt;asp:Table ID=&quot;myTable&quot; runat=&quot;server&quot; Width=&quot;100%&quot;&gt; &lt;asp:TableRow&gt;...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru