日期:2014-05-17  浏览次数:21115 次

多窗体切换不被多次实例化
我现在有这样的程序,cs 架构的,有form1,form2,form3,form4 4个窗体,主窗体是form1,程序打开form1后点击上面按钮打开form2 ,隐藏form1, 在form2上点击一个按钮后打开form3,隐藏form2 ,form3也是一样道理,每个窗体都可以点击相应窗体下的按钮直接返回form1.因为某个接口的特殊性,不能每次打开窗体都
form2 fr2 = new form2() 这样来一下,不知道有什么好的方法,最好有个简单的举例.

------解决方案--------------------
form2 fr2 = new form2();放在最外边
void open()
{
fr2.Show();
}
void close()
{
fr2.Hide();
}

------解决方案--------------------

//在Form1里声明类成员
Form2 form2;

//在button_click事件里写入以下代码
if(form2!=null)
{
   this.hide();
   form2.Show();
}
else
{
   this.hide();
   form2=new Form2();
   form2.Show();
}

这样只需要第一次打开的时候New一次就可以了,在form2里返回form1的时候不要关闭form2,隐藏就可以
------解决方案--------------------
2楼的方式可行,或者参考单例模式,提供一个创建对象的方法,但是具体到创建对象的方法里面判断窗体是否已经存在,如果存在则直接返回,如果不存在则创建
------解决方案--------------------
最好把Form1设计成Mdi,其他的窗体把MdiParent指向Form1,这样可能会好些
------解决方案--------------------
单例模式   .net