【问题标题】:Modal Dialog from a Modal Dialog - both close when second is closed - why?模态对话框中的模态对话框 - 当第二个关闭时都关闭 - 为什么?
【发布时间】:2009-07-14 09:49:51
【问题描述】:

C#/.NET 3.5/WinForms

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

当我在内部对话框中按 Enter 或单击 OK 时,外部对话框也会关闭。我看不到我在哪里执行此操作 - 这是预期的行为吗?

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

【问题讨论】:

  • 外部对话框是否以模态方式运行 [通过 .ShowDialog] ?您应该能够在调试器中调用之后放置断点。但我想你不会问你所做的事情是否有一些微妙之处......
  • 是的,我单步执行了代码,但它只是从内部弹出到外部,没有碰到任何东西。

标签: c# .net winforms modal-dialog


【解决方案1】:

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

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

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

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

【讨论】:

  • 就是这样。我有一种感觉,我很久以前就打过这个,但我找不到它,谷歌也没有帮助。问题解决了。非常感谢。
  • 也许这是固定的?我有 .Net 3.5 SP1 并且 NOT 看到这种行为。
  • 可能是这样。我刚刚在 .Net 3.5 SP1 上尝试过,但没有得到这种行为。不过,我肯定已经在 .Net 2.0 上使用过。
  • .NET 4.7.2 (vb.NET) 中甚至没有修复
【解决方案2】:

我整天都在为此苦苦挣扎,直到找到这篇文章。它尚未在 .NET 4 中修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2020-06-20
    • 2011-08-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多