经过一番测试,我想出了以下解决方案,以避免(从 MdiParent 表单)创建多个子表单实例。
对于第一种形式,代码如下:
public CatForm MyCatForm {
get {
var myCatForms =
MdiChildren.Where(form => form.GetType() == typeof(CatForm));
if (myCatForms.Count() > 0)
return (CatForm)myCatForms.First();
return new CatForm { MdiParent = this };
}
}
到目前为止一切顺利,现在我将开始用其他儿童形式重复自己(请将单词 Cat 更改为 Dog,Sheep),您会明白我的意思。
有人可以写一段代码,类似于:
private Form GetForm<T>(T form){
var myForms = MdiChildren.Where(aForm => aForm.GetType() == typeof(T));
if (myForms.Count() > 0)
return myForms.First();
return new (typeof(T) as Form) { MdiParent = this } ;
}
似乎编译时的 C# 无法确定返回类型:(
在这种情况下,反思会是一种合适的方法吗?
我希望能够创建任何子窗体的唯一实例。
提前致谢