使用参数创建实例

时间:2017-01-01 16:05:37

标签: c#

我有这段代码:

LoginForm loginform = new LoginForm();
loginform.TopLevel = false;
panelcenter.Controls.Add(loginform);
loginform.Show();

现在我想做一个像这样的方法:

private void AddFormToPanelCenter(string Form_0, string name)
{
    Form_0 name = new Form_0();
    name.TopLevel = false;
    panelcenter.Controls.Add(name);
    name.Show();
}

问题是我的参数是字符串,显然它不正确,但我不知道应该使用哪些参数。

2 个答案:

答案 0 :(得分:2)

您不需要传递任何参数,因为它不需要它。

private void AddFormToPanelCenter()
{
    Form name = new Form();
    name.TopLevel = false;
    panelcenter.Controls.Add(name);
    name.Show();
}

答案 1 :(得分:1)

如果您希望能够在任何表单实例上应用您的方法,您可以将表单实例本身传递给您的方法(您也可以传递父面板),如下所示:

void AddFormToPanel(Form frm, Panel pnl)
{
    frm.TopLevel = false;
    pnl.Controls.Add(frm);
    frm.Show();
}

<强>用法:

LoginForm frm = new LoginForm();
AddFormToPanel(frm, panelcenter);

如果您的表单始终为LoginForm但您希望能够使用该实例,则可以使用上一个方法,或将其转换为返回表单实例的函数:

public Form AddFormToPanel(Panel pnl)
{
    LoginForm frm = new LoginForm ();
    frm.TopLevel = false;
    pnl.Controls.Add(frm);
    frm.Show();
    return frm;
}

<强>用法:

LoginForm frm = (LoginForm)AddFormToPanel(panelcenter);

此外,在任何表单上应用该方法的更好方法是使用泛型类,以便您可以传递类型而不是它的实例。您可以使用以下内容:

public class NewForm<T> where T : Form, new()
{
    public static void AddFormToPanel(Panel pnl)
    {
        T frm = new T();
        frm.TopLevel = false;
        pnl.Controls.Add(frm);
        frm.Show();
    }
}

<强>用法:

NewForm<LoginForm>.AddFormToPanel(panelcenter);

希望有所帮助:)