我的程序有多种形式。第五个也是最后一个表单有一个按钮,单击该按钮时,使用Application.Exit()方法关闭应用程序。但是,每次单击按钮时,我都会在第一个表单上收到错误“无法访问处理对象”的错误:
frm2 f2 = new frm2();
this.Hide();
f2.ShowDialog();
this.Show();
编译器指示语句this.show()
是问题所在。有人可以解释为什么我收到此错误以及如何解决它?
答案 0 :(得分:2)
好我编辑了我的回答,我转载了你的问题。如果要使用Form.ShowDialog
,则应设置关闭应用程序的控件的DialogResult。因此,在按钮属性中,您应该将对话框结果设置为某些内容,例如Cancel
。
然后在按钮点击事件上你会做这样的事情:
private void btnClose_Click(object sender, EventArgs e)
{
if (this.DialogResult == DialogResult.Cancel)
{
Application.Exit();
}
}
否则,如果您不需要使用Form.ShowDialog
,则可以只显示Form2。以上不会在我的测试中产生错误。
答案 1 :(得分:0)
在您的代码示例中,frm2
是否拨打了Application.Exit
?如果有,那你为什么要再次拨打this.Show
?
无论如何,您可能遇到与启动应用程序消息循环有关的问题。您是在运行Application.Run()
还是Application.Run(form1)
?
如果您在启动消息循环时向Application.Run()
提供了表单,则不应调用Application.Exit
以退出应用程序。相反,您应该只关闭主窗口,这将导致消息循环完成,调用Application.Run
返回,并且您的应用程序将彻底终止。