日期:2014-05-19  浏览次数:20710 次

关于窗口重复打开的问题.
请问在C#里面,如果才能保证一个窗口不被重复打开,!  
WINFORM

------解决方案--------------------
可以使用反射,如果该类型的窗体已存在则直接显示窗体,否则创建
#region 反射创建窗体
/// <summary>
/// 反射创建窗体
/// </summary>
/// <param name= "type "> 窗体类型 </param>
private void CreateWindow(Type type)
{
bool isExists = false;//标记窗体是否存在
Form form = null;
foreach(Form frm in this.MdiChildren)//从当前窗体的子窗体判断窗体是否存在,存在则将该子窗体赋值给form,记录isExists为true并跳出循环
{
if(frm.GetType() == type)
{
form = frm;
isExists = true;
break;
}
}
if(!isExists)//如果该窗体不存在,则通过反射创建实例
{
//form = (Form)System.Activator.CreateInstance(type,true);
//form.MdiParent = this;
form = (Form)type.GetConstructor(Type.EmptyTypes).Invoke(null);
form.MdiParent = this;
}
form.Show();
form.Activate();
}
#endregion