Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2012, 18:23   #1
drvladson
 
Регистрация: 27.09.2012
Сообщений: 4
По умолчанию Динамическое добавление/удаление контролей в форме

Друзья, здравствуйте!


У меня вот такая беда... Или диллема...
Нужно организовать динамическое добавление\удаление textbox`ов с кнопками.
Что-то типа:
Кнопочка "+" добавляет textBox + Button

Каждая из этих Button`ов удаляет себя и соотетствующий TextBox, и потом нужно пересортировать текстбоксы с батонами так, чтобы были друг за другом. В моей реализации (я не спорю, кривой, через попу, но лучше - мозга не хватает, почему и прошу помощи) не получается почему-то:

- удаляются нормально, но если удалять из центра - не пересортировуются друг за другом...
Код:

Код:
    public partial class uc_domain_check : UserControl
    {
        List<Button> btn_array = new List<Button>(9);
        List<TextBox> text_array = new List<TextBox>(9);

        

        public uc_domain_check()
        {
            InitializeComponent();
            for (int i = 0; i < 9; i++)
            {
                Button _btn = new Button();
                TextBox _txt = new TextBox();
                
                _btn.Text = "X";
                _btn.Visible = false;

                _btn.Size = new Size(23, 23);
                _btn.Name = "b_" + i.ToString();
                _btn.Click += new EventHandler(uc_domain_check_Click);

                _txt.Name = "t_" + i.ToString();
                _txt.Size = new Size(233, 20);
                _txt.Visible = false;

                btn_array.Add(_btn);
                text_array.Add(_txt);

            }
        }

        void uc_domain_check_Click(object sender, EventArgs e)
        {
            Button snd = (Button)sender;

            int id = btn_array.IndexOf(snd);
            this.Controls.Remove(snd);
            this.Controls.Remove(text_array[id]);

            btn_array[id].Visible = false;
            text_array[id].Visible = false;

            relocate();
            this.Refresh();
            

        }



        void relocate()
        {

            int y = 36;
          
            for (int i = 0; i < 9; i++)
            {
                y += 23;
                Point pos = new Point(309, y);
                Point pos2 = new Point(70, y);

                if (btn_array[i].Visible == true)
                {
                    btn_array[i].Location = pos;
                    text_array[i].Location = pos2;

                    this.Controls.Add(btn_array[i]);
                    this.Controls.Add(text_array[i]);
               }
            }

        }

        private void btn1_add_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 9; i++)
            {
                if (btn_array[i].Visible == false && text_array[i].Visible == false)
                {
                    btn_array[i].Visible = true;
                    text_array[i].Visible = true;
                    relocate();
                    break;
                }

            }
        }


    }
Изображения
Тип файла: jpg v_1.jpg (16.1 Кб, 151 просмотров)
Тип файла: jpg v_2.jpg (6.6 Кб, 154 просмотров)
drvladson вне форума Ответить с цитированием
Старый 27.09.2012, 18:35   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Вы используете WinForms или WPF/Silverlight в своей программе?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 27.09.2012, 18:36   #3
drvladson
 
Регистрация: 27.09.2012
Сообщений: 4
По умолчанию

Использую WinForms
drvladson вне форума Ответить с цитированием
Старый 27.09.2012, 18:40   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Пичалька. С помощью XAML и Binding подобные вещи делаются за считанные минуты, а вот в WinForms я вам помочь едва ли смогу(
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 27.09.2012, 22:44   #5
drvladson
 
Регистрация: 27.09.2012
Сообщений: 4
По умолчанию

Ну вот так вот... Имеем то, что имеем %)
drvladson вне форума Ответить с цитированием
Старый 28.09.2012, 16:32   #6
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

а TableLayoutPanel вам не подходит?
Reskov вне форума Ответить с цитированием
Старый 28.09.2012, 19:23   #7
drvladson
 
Регистрация: 27.09.2012
Сообщений: 4
По умолчанию

Подходит! %)

Как раньше не додумался...
drvladson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление и удаление textBox на форме при изменении значения в numericUpDown dvios Visual C++ 0 06.04.2012 14:48
Динамическое создание и удаление компонентов на форме The SCS Общие вопросы Delphi 1 11.02.2012 13:11
Динамическое добавление компонентов Vigilante Компоненты Delphi 1 21.10.2010 01:28
Динамическое добавление в PopupMenu k1r1ch Общие вопросы Delphi 1 02.10.2009 10:29
Динамическое добавление в страницу Dj_smart HTML и CSS 11 26.05.2008 22:28