哈哈果然有人遇到这个问题啊。。过去我为这个都苦恼了好几天,才想出来办法。 很多人都说 this.Hide();这个方法,虽然隐藏了,但是我感觉这个只不过是隐藏,但是它的内存并没有释放。不太好吧
在你的程序目录下打开这个文件Program.cs。你将会看到这段代码
这个是你的的程序初始窗体,也就是父窗体
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());//这里的Form1就是个父窗体
}
你想想如果父亲都关闭了,然后你又派生子窗体,不可能啊。这个和JAVA不一样。父亲都没啦,哪里来的儿子啊。你得想个办法来2个父窗体对吧。(比喻可能不恰当)
所以你得这样解决。给你个例子
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
form1 f1=new form1();
Application.Run(f1);
//到此再来一个另外的父窗体,就是你关闭了第一个父窗体,又要打开的一个窗体。比如叫做form2
form2 f2=new form2()
Application.Run(f2);
}
按照上面的写的话程序执行到 this.close()就将f1关闭了,这个时侯他才会执行f2。这样写你就不用new什么东西了 你要关闭第一个父窗体直接this.close()
他就会执行第二个父窗体啦。
======================================================================
上面都是我做项目的经验啊。呵呵。。如果不是看着你和我遇到同样的问题,我才不回答呢。我既然要回答当然就回答的非常详细。不过你给5分,是不是太……,如果你觉得过意过去就这么办吧。。。。哎~~~~
主引导使用函数引导。
第一个窗体卡住代码第二个窗体不会出来。
第一个窗体关闭后第二个窗体自然打开了。
如果使用窗体引导,可以隐藏第一个窗体。
是继承的问题,你的form2一定是通过form1继承得来的,你可以试试楼上 KwooShung的方法,也可以重新建个form,不要继承form1就可以了,这样就不会出现那种问题了
用this.hide隐藏就可以了吧!
frmMain main = new frmMain();
main.Show();
this.hide();
你这样写试试
this.Hide();
frmMain main = new frmMain();
main.ShowDialog();
this.Show();