首先 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(); 这行代码是需要手动添加的 }
Form2 f = new Form2(); f.Show(); this.Close();
Form1 f = new Form1(); f.Show(); this.Close();
解决办法:(假设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(); }