从父表单项目中引用的子表单返回DialogResult

时间:2012-09-19 08:55:33

标签: c# winforms formclosing

在一个多项目解决方案中,我有一个带有2个表单的启动WinForms项目,只要显示子表单在我的主表单中继续执行,就会期望DialogResult

var form2 = new ThisNameSpace.FormChild();
var dResult = form2.ShowDialog(this);

if(dResult == DialogResult.OK)
{
    // Do some work
}
else
{
    // Do other work
}

出于某种原因,我不得不在另一个项目中移动子Form。我在我的主要启动Form项目中引用了新的Project的dll,但我现在无法返回对话框结果。当我的子表单关闭时,主表单的FormClosing事件将引发CloseReason.None并退出应用程序。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不应该自己提出FormClosing事件,也不应该编写任何自定义代码来关闭对话框。

而是这样做:

  • 在子窗体的“确定”按钮上,将DialogResult属性设置为OK
  • 在您的子表单上
  • ,将set Accept Button属性设置为指向“确定”按钮

这就是关闭窗口所需的全部内容,将返回正确的DialogResult。

如果您需要“手动”关闭它(对于模态对话框很少见,即使用ShowDialog而不是Show打开的对话框),请使用Close方法。