Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические контролы 
V
    Опции темы
Tiberian
Дата 29.5.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.2.2008

Репутация: нет
Всего: нет



   На форму динамически добавляется определенное количество checkbox-ов  

Код

            for (int i = 0; i < ta.Columns.Count; i++)
            {
                CheckBox cb = new CheckBox();
                cb.Text = ta.Columns[i].ColumnName;
                cb.Top = 30 + i * 22;
                cb.Left = 10;
                

                groupBox1.Height = 53 + 22 * i;
                cb.Name = ("cb" + i.ToString());
                groupBox1.Controls.Add(cb);
            }


    Затем их нужно заменить другими. Для этого я нахожу все старые и удаляю их:

Код

            for (int i = 0; i < 50; i++)
            {
                Control[] c = this.Controls.Find("cb" + i.ToString(), true);

                foreach (Control con in c)
                {
                    this.Controls.Remove(con);
                }
            }


   Так вот, после добавления на форму очередной порции чекбоксов те, что были созданы до этого сохраняют свои значения. Собственно, в это м и заключается проблема.
PM MAIL   Вверх
-Mikle-
Дата 29.5.2008, 13:53 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Цитата(Tiberian @  29.5.2008,  14:19 Найти цитируемый пост)
Для этого я нахожу все старые и удаляю их

Добавляешь в groupBox1, а удалить пытаешься из формы? Вот и причина тебе, они не удаляются вовсе. А новые не видно, потому как новые располагаются под старыми.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Tiberian
Дата 29.5.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.2.2008

Репутация: нет
Всего: нет



     Угумс, ищу на форме. Только метод поиска вызывается с 2мя аргументами, 2ой из которых - искать в чаилдах или нет. Так шта не в этом проблема.
PM MAIL   Вверх
-Mikle-
Дата 29.5.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Искать можешь у формы, но удалять должен у того, у которого он содержится!!!

Код

            for (int i = 0; i < 50; i++)
            {
                Control[] c = this.Controls.Find("cb" + i.ToString(), true);

                foreach (Control con in c)
                {
                    groupBox1.Controls.Remove(con);
                }
            }


а если, например, ты не знаешь родителя, который содержит удаляемый контрол, то можешь так:
Код

            for (int i = 0; i < 50; i++)
            {
                Control[] c = this.Controls.Find("cb" + i.ToString(), true);

                foreach (Control con in c)
                {
                    con.Parent.Controls.Remove(con);
                }
            }


И в заключении, такой подход (динамическое удаление/добавление) не является наилучшим, особенно если эта процедура выполняется часто. Для такой задачи лучше всего будет реализовать что-нибудь наподобие растущего кэша. То есть добавляются при необходимости, а вместо удаления Visible = false... ИМХО.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Tiberian
Дата 29.5.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.2.2008

Репутация: нет
Всего: нет



    Спасибо, этот вариант сработал =) Самое интересное, со старым вариантом контролы удалялись, но при следующем их добавлении параметры сохранялись...
PM MAIL   Вверх
-Mikle-
Дата 29.5.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Незачто Tiberian. Заходи чаще  smile 

Цитата(Tiberian @  29.5.2008,  20:25 Найти цитируемый пост)
со старым вариантом контролы удалялись, но при следующем их добавлении параметры сохранялись

Такого физически просто не могло быть, невозможно это. Я уже говорил, что
Цитата(-Mikle- @  29.5.2008,  16:53 Найти цитируемый пост)
они не удаляются вовсе. А новые не видно, потому как новые располагаются под старыми. 

впрочем неважно, главное вопрос решен.



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.