我正在编写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参数而不是整个代码?
答案 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");
}
}