从第二表单终止应用程序不会停止调试

时间:2013-02-06 23:24:10

标签: c# winforms visual-studio-2010

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

这是我尝试过的代码:

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

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

3 个答案:

答案 0 :(得分:3)

如果您想关闭整个应用程序,可以致电Application.Exit

答案 1 :(得分:1)

您的代码无效的原因是您正在创建一个新的Form1实例,而不是从中启动Form 2的实例。

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

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

wRar有你想要的答案。

答案 2 :(得分:1)

您可以像wRAR建议的那样执行Application.Exit,或者尝试以下替代方案。

在给出的例子中:

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

Form1将不会关闭,因为你没有在对它的引用上调用Close,而是在它的新实例上调用close。

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

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();
}