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

ser*_*ist 10 .net c# modal-dialog winforms

C#/ .NET 3.5/WinForms

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

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

我可以提供代码,但我不想让它混乱.

adr*_*nks 18

发生这种情况是因为ShowDialog呼叫也会修改其所有者的状态.

要防止这种情况发生,您需要在调用第二个对话框后重置DialogResult第一个模式对话框:DialogResult.NoneShowDialog

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

这是一个长期存在的问题(见本文).