我有一个使用多个表单的程序,我希望能够从表单2终止应用程序,以便它不再运行或调试。
这是我尝试过的代码:
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.Close();
this.Close();
}
使用上面的代码关闭表单,但不会停止调试过程,我不确定这是否是一个问题!
答案 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();
}