模态对话框中的模态对话 - 当第二个关闭时关闭 - 为什么?

时间:2009-07-14 09:49:52

标签: c# .net winforms modal-dialog

C#/ .NET 3.5 / WinForms

我有一个打开模态对话框表单的表单,它打开另一个模态对话框表单。内部对话框表单有OK和Cancel按钮,其AcceptButton和CancelButton分别设置为它们。

当我按Enter键或在内部对话框中单击“确定”时,外部对话框也会关闭。我无法看到我在做什么 - 这是预期的行为吗?

我可以提供代码,但我不想把它弄得乱七八糟。

2 个答案:

答案 0 :(得分:18)

这是因为ShowDialog调用也会修改其所有者的状态。

为防止这种情况发生,您需要在DialogResult调用第二个对话框后将第一个模态对话框的DialogResult.None重置为ShowDialog

private void Button1_Click(object sender, EventArgs e)
{
    InnerDialog inner = new InnerDialog()
    DialogResult innerResult = inner.ShowDialog(this);
    this.DialogResult = DialogResult.None;
}

这是一个长期存在的问题(见this帖子)。

答案 1 :(得分:0)

我一整天都在努力,直到找到这篇文章。它尚未在.NET 4中修复。