Как я могу динамически добавлять элементы управления (неизвестный тип) в форму? - PullRequest
4 голосов
/ 16 января 2010

Привет, я хочу добавить элементы управления в мою форму обычным методом, примерно так:

void addcontrol(Type quien)
{
    this.Controls.Add(new quien);            
}

private void btnNewControl_Click(object sender, EventArgs e)
{
    addcontrol(typeof(Button));
}

это возможно?

Ответы [ 2 ]

7 голосов
/ 16 января 2010

Вы можете создать новый экземпляр из экземпляра типа, используя Activator.CreateInstance :

void AddControl(Type controlType)
{
    Control c = (Control)Activator.CreateInstance(controlType);
    this.Controls.Add(c);
}

Было бы лучше сделать универсальную версию:

void AddControl<T>() where T : Control, new()
{
    this.Controls.Add(new T());
}
1 голос
/ 16 января 2010

Это, безусловно, будет работать

void addcontrol(Control ctl)
{
    this.Controls.Add(ctl);            
}

private void btnNewControl_Click(object sender, EventArgs e)
{
    addcontrol(new Button());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...