C#/ .NET 3.5 / WinForms
我有一个打开模态对话框表单的表单,它打开另一个模态对话框表单。内部对话框表单有OK和Cancel按钮,其AcceptButton和CancelButton分别设置为它们。
当我按Enter键或在内部对话框中单击“确定”时,外部对话框也会关闭。我无法看到我在做什么 - 这是预期的行为吗?
我可以提供代码,但我不想把它弄得乱七八糟。
答案 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中修复。