首先 program.cs 中
[STAThread]
static void Main()
{
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)
// 自动生成的代码是这样的
// Application.Run(new Form1())
// 表示 实例化一个新的 Form1 并显示之 此时程序进入消息循环
// 一旦 Form1 被关闭则程序也随之关闭了
// 为了让程序在 Form1 关闭后可以继续运行 需要修改下
new Form1().Show()
Application.Run()
// 这样做就能避免 Form1 被关闭后程序自动退出了
// 但这样做的风险是什么呢?
// 一旦用户忘记了 Application.Exit()
// 则程序在所有窗口关闭后 其进程仍然没有结束
// 所以 Application.Exit()这行代码是需要手动添加的
}
Form1:Button_Click
Form2 f = new Form2()
f.Show()
this.Close()
Form2:Button_Click
Form1 f = new Form1()
f.Show()
this.Close()
注意:当最后一个窗口关闭时要调用 Application.Exit()否则程序进程是不会结束的
解决办法:(假设Form2是最后一个窗口)
private void Panel1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2()
f2.Closed += new EventHandler(this.f2_Closed)
//f2.Closed += (obj, args) =>{ Application.Exit()}
f2.Show()
this.Close()
}
private void f2_Closed(object sender, EventArgs e)
{
Application.Exit()
}
一般来说,一个程序最好应该只有一个窗口。如果您要使用多个窗口的话,有这样几种方法,仅供参考:
1 把其他的窗口做成控件,放在主窗口上,在主窗口中添加切换子控制代码。
2 隐藏当前窗口,显示下一个窗口;
3 如果两个窗口不用共享数据,可以把下一个窗口做成独立exe,调用exe。
4 使用高级的框架技术控制子窗体的内容,比如prism, 管线开发等,但是跳转判断还是在主程序做出。
希望可以帮到您。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)