Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
0 / 0 / 1
Регистрация: 07.08.2014
Сообщений: 63

Обращение к динамически созданным на форме объектам

01.12.2016, 14:34. Показов 7185. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Я динамически создаю по нажатию кнопки на форме разные элементы: comboBox, textBox, label.
Создаю вот так:
C#
1
2
3
4
var cb1 = new ComboBox() { Location = new Point(183, Y), Width = 312, Height = 24 };
cb1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10);
cb1.BackColor = SystemColors.Control;
this.Controls.Add(cb1);
Сразу же заполняю его данными из БД через запрос:
C#
1
ComboBoxFill(cb1, "SELECT Products.Id, Products.Name FROM Products INNER JOIN Orders ON Products.Id = Orders.Id_product WHERE (Orders.Id_client=" + comboBox1.SelectedValue + ");", "Id", "Name");
Все заполняется. Подскажите, пожалуйста, как мне теперь обратиться к этому созданному объекту, что считать его параметр Text? По какому имени? Просто если прям сразу же здесь, в пределах процедуры кнопки, то это cb1. А когда я жму другую кнопку, как в обработчике написать, что именно с этого comboBox'a считать? Особенно когда я их создал несколько нажатием первой кнопки, как мне их различать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2016, 14:34
Ответы с готовыми решениями:

Обращение к динамически созданным объектам
Подскажите возможно ли получить список элементов созданных в TabControl и обращаться к ним? суть проблемы в том, что мне нужно обратиться к...

Обращение к динамически созданным textbox
Создаётся некоторое количество textbox TextBox tb = new TextBox; tb = new TextBox(); ...

Обращение к динамически созданным textbox-ам
Создаю табличку из текстбоксов так: n = Convert.ToInt32(textBox1.Text); ...

4
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
01.12.2016, 14:39
Auratos,
можно присвоить имя при создании:
C#
1
cb1.Name = "combo1";
затем можно обращаться по этому имени, например:
C#
1
(this.Controls["combo1"] as ComboBox).DataSource = someSource;
2
0 / 0 / 1
Регистрация: 07.08.2014
Сообщений: 63
01.12.2016, 15:12  [ТС]
Даценд, спасибо большое. Что-то нагуглить ничего не получилось за короткий срок по этому вопросу

Добавлено через 10 минут
А такой вопрос: можно ли как-то указать реакцию такого элемента на определенные события? Например, как с обычным comboBox:

C#
1
2
3
4
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
    // какое-то действие
}
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
01.12.2016, 15:36
Лучший ответ Сообщение было отмечено Auratos как решение

Решение

Auratos,
Да, подписывайтесь на событие динамически:
C#
1
cb1.SelectedIndexChanged += new EventHandler(cb1_SelectedIndexChanged);
Обработчик:
C#
1
2
3
4
5
void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
    ComboBox cb = sender as ComboBox; //в cb будет ссылка на комбобокс, запустивший обработчик
    // какие-то действия
}
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 416
13.08.2019, 02:30
Даценд, по поводу записи в 2 (permalink). . .
Имеется такая проблема . . . Созданы программно несколько Lable на Chart1, которые имеют имена при создании Lable0, Lable1, Lable2 . . . Нужно программно по нажатию button1 изменить положение конкретной Lable (i- известно), задав его в textBox1.
Скажите, почему не работает аналогичный код
C#
1
(this.Controls["Lable " + i.ToString()] as Label).Location = new Point(120, Convert.ToInt32(textBox1.Text));
. . . Выдает ошибку "Ссылка на объект не указывает на экземпляр объекта"

Добавлено через 38 минут
Даценд, по поводу 2 (permalink) . . . У меня есть созданные программно Label на chart1, которые имеют имена MyLabel0, MyLabel1, MyLabel2. . . Мне нужно программно изменить их положение, задав его в textBox1. Скажите, почему не работает аналогичный код:
C#
1
 (this.Controls["MyLabel" + i.ToString()] as Label).Location = new Point(120, Convert.ToInt32(textBox1.Text));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2019, 02:30
Помогаю со студенческими работами здесь

Обращение к динамически созданным объектам
Доброго времени суток. Есть меню формы - MainMenu1. В одной из вкладок динамически создаются кнопки, по нажатию на которые...

Обращение к динамически созданным объектам Qt
Доброго времени суток. У меня возникла необходимость в диалоговом окне по нажатию на кнопку создавать textedit'ы, в них пользователь пишет...

Обращение к динамически созданным объектам
Я динамически создаю текстовые поля (PlainTextEdit) с именами по типу name+айди_из_БД (name1, name2 и т.д). В другом слоте мне нужно...

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

Как обращаться к динамически созданным объектам
Доброго времени суток. Возникла следующая необходимость, создать указанное кол-во динамических объектов(lineedit, к примеру)и в последствии...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru