2009-07-14 78 views
10

C#/ .NET 3.5/WinForms模态对话框中的模态对话框 - 两者在关闭时关闭 - 为什么?

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

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

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

+0

外部对话框是通过模态[通过.ShowDialog]运行的吗?您应该能够在调试器的调用后放置一个断点。但我想你不会问是否对你正在做的事情没有一些微妙的... – 2009-07-14 09:56:20

+0

是的,我穿过代码,但它只是从内到外弹出而没有碰到任何东西。 – serialhobbyist 2009-07-14 10:20:00

回答

17

发生这种情况是因为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后)。

0

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