Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/55: Рейтинг темы: голосов - 55, средняя оценка - 4.60
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100

Удалить динамически созданные объекты

17.02.2015, 08:04. Показов 11939. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

У меня есть панелька. Я хочу динамически на ней создавать контролы.
Контролы будут создаваться группами. Например, создам textBox и listBox.
Когда они станут не нужны, хочу удалить их из панели создать там richTextBox.
И наоборот. Т.е. создавать и удалять группы по мере надобности.

Пробую удалять при помощи Dispose() перебирая все контролы в панели
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void Form1_Load(object sender, EventArgs e)
        {
           //создание контролов 
           ListBox lbxCognates = new ListBox() { Parent = panel1, Dock = DockStyle.Bottom, Height = 350, Font = new Font("Arial Unicode MS", 10) };
           TextBox tbxEnterWord = new TextBox() { Parent = panel1, Dock = DockStyle.Top, Font = new Font("Arial", 16) };
        }
 
        // Удаление контролов
        private void button1_Click(object sender, EventArgs e)
        {
           foreach (Control ctrl in panel1.Controls) ctrl.Dispose();
        }
При нажатии на button1 удаляются не все контролы а один. При нажатии еще раз button1 - еще один.
Почему не все разом за один проход?

И еще. Правильный ли у меня подход - создавать контролы и затем удалять их по мере ненадобности?
Или лучше скрывать их при помощи Hide() или удалять их из коллекции при помощи panel1.Controls.Remove(.....
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2015, 08:04
Ответы с готовыми решениями:

Удалить динамически созданные textBox
Здравствуйте! По нажатии кнопки создаю textBox. как при нажатии другой кнопки удалить последний созданный? private void...

Динамически созданные компоненты
Имеется форма с созданным на ней datagridview. Остальные компоненты по мере необходимости создаются динамически. Динамически созданная...

Как переместить созданные объекты
Я создаю некоторое количество объектов, в моём случае это кубики. Мне нужно перемещать их всех. Пробовал так: if(e.KeyCode == Keys.D){ ...

20
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
17.02.2015, 23:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Андрей69 Посмотреть сообщение
Приведет ли такая конструкция к засорению памяти?
ну почему засорению, если все 100 контролов вам нужны, то это не засорение,
вообще 100 это не цифра, вполне может столько быть в обычном проекте на винформах и даже больше.
главное понимать что от операций Controls.Add Controls.Clear, память почти не меняется (размерами ссылок можно пренебречь) а меняется только оператором new , который создает новый объект (контрол) в куче.

в после такого кода, память не изменится, ибо мы добавили и сразу удалили (и так 100 раз),
и потом через какое то время сборщик мусора сам почистит все 100 этих созданных текстбоксов, ибо на них нету ссылок ни где более
C#
1
2
3
4
5
            for (int i = 0; i < 100; i++)
            {
                panel1.Controls.Add( new TextBox() );
                panel1.Controls.Clear();
            }


Цитата Сообщение от Андрей69 Посмотреть сообщение
Или так нельзя?
нельзя, это метод не для этих целей, он нужен чтобы освободить ресурсы используемые контролом.
точно почему не знаю, возможно при вызове ctrl.Dispose(); в фориче вызывалось какое-то исключение, и итерации прекращались.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2015, 23:56

Подписать на событие динамически созданные TextBox
Создаю массив TextBox-ов : TextBox tb = new TextBox; for (int i = 0; i &lt; tb.Length; i++) { ...

Динамически созданные элементы. Подписка на события
Подскажите пожалуйста как создать событие для каждой программно созданной кнопки? И ещё мне нужно чтобы при следующем запуске программы...

Обработка нажатий на динамически созданные Buttons
Доброго времени суток!вот с такая проблема: пишу программу для бронирования мест в кинотеатре, в зависимости от зала динамически создаю...

Вывод записей Vk в динамически созданные Label
Ребята помогите пожалуйста. Как можно вывести нормально разборчиво записи из вк в различные леболы. И при этом сделать возможный вывод...

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


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru