C#Winform加载方法

时间:2014-03-18 09:51:44

标签: c# winforms

我正在编写WinForm应用程序,其中每个新表单都是主表单的子表单。每次我打电话给menustripitem点击我都会使用这样的代码:

bool opened = false;
foreach (Form forma in Application.OpenForms)
{
    if (forma is frm_formname)
    {
        opened = true;
        break;
    }
}

if (!opened)
{
    frm_formname frm = new frm_formname();
    frm.MdiParent = this;
    frm.Show();
}
else
{
    MessageBox.Show("Form already exist");
}

如何更改代码以使用此代码创建方法,我将传递formname和mainformname作为参数,并在单击事件调用时此方法发送此2参数而不是整个代码?

1 个答案:

答案 0 :(得分:0)

您不能使用字符串,您应该将您要查找的表单类型作为参数传递。 这样的事情应该有效(未经测试!)。

public void FindOrCreateForm(Type formType)
{
bool opened = false;
foreach (Form forma in Application.OpenForms)
{
    if (forma.GetType() == formType)
    {
        opened = true;
        break;
    }
}
if (!opened)
{
    Form frm = (Form) Activator.CreateInstance(formType);
    frm.MdiParent = this;
    frm.Show();
}
else
{
    MessageBox.Show("Form already exist");
}
}