以下解决方案按您的预期工作。
要试用此示例代码,请在 Visual Studio 中创建一个新的 WinForms 应用程序(即 File --> New Project,选择 Visual C# --> Windows Classic Desktop 并使用模板“Windows Forms App (.NET Framework)”),然后添加第二种形式。
确保这两个表单命名为Form1
和Form2
,然后在生成的解决方案中修改代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.FormClosed +=
new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed);
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
(new Form2()).Show();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.FormClosed +=
new System.Windows.Forms.FormClosedEventHandler(this.Form2_FormClosed);
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
}
而这是应用程序的入口点,修改如下:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Show first form and start the message loop
(new Form1()).Show();
Application.Run(); // needed, otherwise app closes immediately
}
}
诀窍是在要退出应用程序的位置使用不带参数的 Application.Run() 和 Application.Exit()。
现在,当您运行应用程序时,会Form1
打开。单击X(右上角),Form1 关闭,但Form2
出现了。再次单击,X表单关闭(也退出应用程序)。
除了将启动Form2
放入 FormClosed 事件中,您还可以创建一个按钮Button1来完成这项工作,但在这种情况下,不要忘记通过显式关闭按钮所属的表单this.Close()
:
private void button1_Click(object sender, EventArgs e)
{
(new Form2()).Show(); this.Close();
}