C# 从第二个窗体终止应用程序不会停止调试
我有一个使用多个表单的程序,我希望能够从表单2中终止应用程序,使其不再运行或调试 这是我尝试过的代码:C# 从第二个窗体终止应用程序不会停止调试,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我有一个使用多个表单的程序,我希望能够从表单2中终止应用程序,使其不再运行或调试 这是我尝试过的代码: private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Form1 frm = new Form1(); frm.Close(); this.Close(); } 使用上面的代码会关闭表单,但不会停止调
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.Close();
this.Close();
}
使用上面的代码会关闭表单,但不会停止调试过程,我不确定这是否是一个问题 如果要关闭整个应用程序,可以调用。代码不起作用的原因是您正在创建Form1的一个新的单独实例,而不是从中启动Form2的实例 因此,您正在创建Form1的新实例,然后关闭新Form1,然后关闭Form2。而从不引用从中打开Form2的Form1实例 如果希望Form2关闭原始Form1,则需要向Form2传递对Form1的引用,以便Form2可以调用Form1父实例上的close()
wRar有您想要的答案。您可以执行应用程序。按照wRar的建议退出,或者尝试以下替代方法 在给出的示例中:
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.Close();
this.Close();
}
Form1不会关闭,因为您不是对它的引用调用close,而是对它的新实例调用close
相反,如果您不想使用Application.Exit,您可以始终执行以下操作,假设您调用了Form2.Show(this)并引用了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();
}
Form1是推出Form2的主要表单吗?“工具条”菜单“单击显示”在表单2中?请注意,您掌握了其中的诀窍:)在您的示例中,表单1不会关闭,因为您没有对它的引用调用“关闭”,而是对它的新实例调用“关闭”。真不敢相信我没有尝试过。谢谢