从2nd Form终止应用程序不会停止调试

本文关键字:调试 应用程序 2nd Form 终止 | 更新日期: 2023-09-27 17:57:58

我有一个使用多个表单的程序,我希望能够从表单2中终止应用程序,使其不再运行或调试。

这是我尝试过的代码:

 private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form1 frm = new Form1();
            frm.Close();
            this.Close();
        }

使用上面的代码可以关闭表单,但不会停止调试过程,我不确定这是否是一个问题!

从2nd Form终止应用程序不会停止调试

如果要关闭整个应用程序,可以调用Application.Exit

您的代码不起作用的原因是您正在创建Form1的一个新的独立实例,而不是启动Form2的实例。

因此,您正在创建一个Form1的新实例,然后关闭新的Form1,然后关闭Form2。而从不引用从中打开Form2的Form1实例。

如果您希望Form2关闭原始Form1,那么您需要向Form2传递对Form1的引用,以便Form2可以在Form1的父实例上调用close()。

wRar有你想要的答案。

您可以执行Application.按照wRAR的建议退出,或者尝试以下选项。

在给定的示例中:

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
    Form1 frm = new Form1();
    frm.Close();
    this.Close();
}

Form1不会关闭,因为您没有对它的引用调用close,而是对它的新实例调用close。

相反,如果您不想使用Application.Exit,您可以始终执行以下操作,假设您调用Form2.Show并引用Form1:

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{      
    this.Close();
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
   if ( this.Owner != null )
     this.Owner.Close();
}