Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > UserControl на форме


Автор: Аnya 28.3.2014, 16:41
Здравствуйте. Я на форму добавляю UserControl (картинка ниже).

И мне нужно, чтобы когда я выбирала какое-то значение из combobox, на форму добавлялся еще такой же UserControl.
Подскажите пожалуйста, где поместить обработчик? Или функцию необходимую.
Я делала так, в форме создавала функцию 
Код

public void insert_uc(UserControl uc) 
        { 
            this.panel3.Controls.Add(uc); 
            uc.Location = new Point(73, 113); 
        }  


А в обработчике UserControl'а писала вот:
Код

private void comboBox5_or_and_TextChanged(object sender, EventArgs e) 
        { 
            UC2_Selection q = new UC2_Selection(); 
            if (comboBox5_or_and.Text != "") 
            { 
                q.insert_uc(this); 
            } 
        }  



Но не работало.

Автор: micronic 16.4.2014, 15:43
Я так понял, данный контрол представляет собой одну запись и нам необходимо организовать автоматическое добавление новых элементов.
Можно пойти различными путями, но наиболее правильно будет не складывать их в кучу на форме. Потому что когда их станет достаточно много, должна появиться полоса прокрутки (отдельный контрол, который так же придется создавать). Поэтому такие контролы как у вас как правило плодятся в специальных контейнерах (именно контейнеры можно будет потом кидать на форму, растягивать как надо, устанавливать анкоры и т.п.).

К сожалению, кода придется писать достаточно много, но путь развития я вам думаю что указал. Создавайте контрол-контейнер, в котором будут реализованы методы Add, RemoveAt, возможно Sort... Все что вам возможно когда-нибудь понадобится... Так же не лишним будет создать полосу прокрутки (или использовать имеющийся VScrollBar), которая будет перемещать все контролы-элементы внутри контрола-контейнера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)