动态初始化窗体对象

3 c# winforms

如何动态初始化win表单.在我的应用程序中,我有多种形式,如超过50,以下代码重复多次..

所以我想为它创建一些功能并完成这项工作.但是我怎样才能创建new () instance一个特定的表单.
任何帮助将不胜感激.

private void ShowForm(object frm)
{
    if (frm == null || frm.IsDisposed)
    {
        frm = new <<Here is some Class Name>> { MdiParent = this };
        frm.Show();
        frm.WindowState = FormWindowState.Maximized;
    }
    else
    {
        frm.Activate();
    }
 }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

如果您知道Type要使用,您可以使用Activator.CreateInstance:

private void ShowForm(Form form, Type type)
{
    if (form == null || form.IsDisposed)
    {
        form = (Form) Activator.CreateInstance(type);
        form.MdiParent = this;
        form.Show();
        form.WindowState = FormWindowState.Maximized;
    }
    else
    {
        form.Activate();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您从不同的地方调用它,并在编译时知道要使用哪种类型:

private void ShowForm<T>(T form) where T : Form, new()
{
    if (form == null || form.IsDisposed)
    {
        form = new T();
        form.MdiParent = this;
        form.Show();
        form.WindowState = FormWindowState.Maximized;
    }
    else
    {
        form.Activate();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我推荐这种通用解决方案. (2认同)