0

在一个多项目解决方案中,我有一个带有 2 个表单的启动 WinForms 项目,DialogResult每当子表单显示在我的主表单中继续执行时,我都会期待一个。

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

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

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

4

1 回答 1

1

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

而是这样做:

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

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

如果您需要“手动”关闭它(这在模态对话框中很少见,即用ShowDialog代替打开的对话框Show),请使用Closemethod.

于 2012-09-19T09:44:32.570 回答