我正在尝试创建一个可以打开单个表单实例的可重用函数。表示如果表单尚未打开,则应创建并显示新表单,如果已打开,则应将现有表单置于最前面。
我正在使用以下功能,
if (Application.OpenForms["FPSStorageDemo"] == null)
{
FPSStorageDemo fp = new FPSStorageDemo();
fp.Name = "FPSStorageDemo";
fp.Show();
}
else
{
((FPSStorageDemo)Application.OpenForms["FPSStorageDemo"]).BringToFront();
}
但是无论我必须打开一个表单,我都必须一次又一次地编写这段代码。但我需要一个可以完成这项工作的可重用函数。
我写了一个函数,比如,
void OpenSingleInstanceForm(Type TypeOfControlToOpen)
{
bool IsFormOpen = false;
foreach (Form fm in Application.OpenForms)
{
if (fm.GetType() == TypeOfControlToOpen)
{
IsFormOpen = true;
fm.BringToFront();
break;
}
}
if (!IsFormOpen)
{
Object obj = Activator.CreateInstance(TypeOfControlToOpen);
//obj.Show(); //Here is the problem
}
}
但最后我不知道如何显示新的表单实例。有人可以建议怎么做吗?这是错误的还是有其他方法可以做到这一点?
提前致谢。