C# 打开一个通用表单
我想要一个方法,只能发送表单类型来打开,然后打开该表单 这就是我到目前为止所做的:C# 打开一个通用表单,c#,generics,typeof,C#,Generics,Typeof,我想要一个方法,只能发送表单类型来打开,然后打开该表单 这就是我到目前为止所做的: private void OpenForm(Type t) { if (OpenedForm != null) { OpenedForm.Close(); } IList list = (IList)Activator.CreateInstance( typeof(List<>).MakeGenericType(t));
private void OpenForm(Type t)
{
if (OpenedForm != null)
{
OpenedForm.Close();
}
IList list = (IList)Activator.CreateInstance(
typeof(List<>).MakeGenericType(t));
OpenedForm.MdiParent = this;
OpenedForm.Show();
OpenedForm.WindowState = FormWindowState.Maximized;
}
然后简单地这样称呼它:
Form newform = new TestForm();
OpenForm(newform);
但我很想知道是否有可能像我在第一个代码片段中尝试的那样完成它,以及需要做些什么来实现这一点
private void OpenForm(Type t)
{
if(!typeof(Form).IsAssignableFrom(t))
throw new ArgumentException("Required description of Form Type", "t");
if (OpenedForm != null)
OpenedForm.Dispose(); //will also close a Form
OpenedForm = (Form)Activator.CreateInstance(t);
OpenedForm.Show();
OpenedForm.WindowState = FormWindowState.Maximized;
}
现在您只能传递Form
类或其派生类的Type
元数据。因此,如果你这样做:
OpenForm(typeof(Form));
将创建并打开一个新的空表单
OpenForm(typeof(Form));