问题描述
我有一个主界面FormMain,点击其上的按钮1会出现Form2界面,但每点一次就出现一个Form2!!!怎么样限定只能有一个Form2存在呢???如何实现如果Form打开了则焦点到Form2,如果没打开则打开。求帮助,求包养!!!谢谢
解决方案
解决方案二:
参考单态模式
解决方案三:
定义全局变量Formform;在事件中判断if(form==null&&form.isdisposed){form=newForm();form.show();}else{form.active()}
解决方案四:
单例模式
解决方案五:
可以做一个全局的static,每次创建前先判断是否存在
解决方案六:
staticForm2form=null;publicstaticForm2GetInstance(){if(form==null||form.IsDisposed){form=newForm2();}returnform;}打开form2时Form2list=Form2.GetInstance();list.Show();
解决方案七:
单件模式,代码具体例如下:privatestaticCustInfoinstance;publicstaticCustInfoInstance{get{if(instance==null){instance=newCustInfo();}returninstance;}set{instance=value;}}其它窗口直接调用CustInfo.instance
解决方案八:
补充一下,set{instance=value;}这段不要了,只读就好了
解决方案九:
if(frm1!=null&&!frm1.IsDisposed){frm1.Show();frm1.BringToFront();}else{frm1=newFrmConfig();frm1.Show();}
解决方案十:
frm1=newFrmConfig();改为frm1=newForm1();我没改过来
解决方案十一:
设置一个全局变量最好,否则foreach(variteminApplication.OpenForms){if(itemisForm2){return;}}Form2新实例.Show();
解决方案十二:
引用10楼的回复:
设置一个全局变量最好,否则C#codeforeach(variteminApplication.OpenForms){if(itemisForm2){return;}}Form2新实例.Show();
return前加一行item.Active();