VS C#中关闭一个窗口、打开另外一个窗口的方法和注意事项
(2016-06-09 09:34:35)
标签:
winform显示窗口关闭窗口application.run() |
分类: windows编程 |
在VS中使用c#开发winform应用程序,经常需要关闭一个窗口的同时开启另外一个窗口,如何实现?
private void Form1_FormClosed(object sender,
FormClosedEventArgs e)
{
Form2 frm2
= new Form2();
frm2.Show();
//Application.Run(new Form2());
}
private void button1_Click(object sender,
EventArgs e)
{
this.Close();
Form2 frm2
= new Form2();
frm2.Show();
//Application.Run(new
Form2());
}
//Application.Run(new Form1());
Form1 frm1
= new Form1();
frm1.Show();
Application.Run(); //这里开启单个线程,开启一个消息循环
实现方法如下:
假定有一个窗口Form1 和
Form2,希望在Form1关闭的同时显示Form2。或者在点按Form1中的某个按钮button1时关闭Form1,
并显示Form2.
在button的click事件中,或者在form的formclosed事件可用如下代码:
需要注意的是,不能使用application.run方法来做,这个时候会启动另外一个线程(我的理解),会报错。
与此同时还要注意,光有上面的代码不够,还要修改program.cs文件。如果不修改,则上面的语句并不起作用,上面的并不显示form2.
在Program.cs的Main方法中,修改成如下代码:
也就是必须将原来的Application.Run(new
Form1())改成上面的代码。这样才可以正常显示。
之所以出现只能关闭form1,不能显示form2的情况,症结在application.run()上。
根据MSDN的解释:
Run() |
在没有窗体的情况下,在当前线程上开始运行标准应用程序消息循环。 |
Run(Form) |
在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见。 |
可以看到,两个方法的情况是有区别的。我理解就是在单个线程上开始了一个新的消息循环,这是不被允许的。所以不要使用application.run()方法来使得窗口可见。
后一篇:GMAT:一个开源软件