visual C#中如何在打开另一个窗口的同时关闭之前窗口

很急啊!在线等。。。。
private void inlabel_Click(object sender, EventArgs e)
{
loginForm frm2 = new loginForm();
frm2.Show();
this.Close();
}
这个是我写的代码,但是用this.Close();会关闭整个程序。
我要的是原来的窗口关闭,打开的新窗口仍然存在!!

我提供一种方法,先在第一个窗口声明一个公共的bool变量并赋值为true:
如public bool hh = true;
在program类里运行第二个窗口,主要代码:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form1 = new Form1();
form1.ShowDialog(); //模式窗口,先运行Form1的作用
if (from1.hh == false)
{
Application.Run(new Form2());
}
然后在Form1的关闭的相关控件(或按钮或什么的,是你要关闭这个窗口的控件) 将hh赋值为false
第一个窗口(Form1)还没完: 在From1的FormClosing事件(关闭窗口时运行的事件)中(双击这个事件编写代码)判断bool变量hh的值:
if(hh == true)
{
Application.Exit();
}

补: 你刚开始想在点击那个控件再显示另一个窗口的想法就不要了
我这样写绝对可以 我自己都是这样写的,很赞! 那个控件的点击事件就只用写:把hh赋值为false 就可以了!当然Form1这个窗口是要this.Close()的 试试看吧! 如果再遇到什么问题再和我联络 ,大家一起探讨
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-23
在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被自动关闭了。

解决方案:
1.更改打开窗口的顺序,比如LoginForm在主窗口打开前就用不同的打开方式打开(如ShowDialog)
2.或不要关闭主窗口,而改为隐藏。本回答被提问者采纳
第2个回答  2009-12-22
private void inlabel_Click(object sender, EventArgs e)
{
loginForm frm2 = new loginForm();
frm2.Show();
this.Hide() ;
}
第3个回答  2009-12-22
public void button1(Object sender, 不记得了)
{
Frame2 f2 = new Frame2();
f2.show();
this.close();
}
相似回答