C#/ .NET 3.5/WinForms模态对话框中的模态对话框 - 两者在关闭时关闭 - 为什么?
我有一个窗体,打开一个模式对话框窗体,打开另一个模式对话框窗体。内部对话框窗体中有OK和Cancel按钮,它们的AcceptButton和CancelButton分别被设置为它们。
当我按Enter或在内部对话框中单击确定时,外部对话框也会关闭。我看不到我在做什么 - 这是预期的行为?
我可以提供代码,但我不想把它弄乱。
C#/ .NET 3.5/WinForms模态对话框中的模态对话框 - 两者在关闭时关闭 - 为什么?
我有一个窗体,打开一个模式对话框窗体,打开另一个模式对话框窗体。内部对话框窗体中有OK和Cancel按钮,它们的AcceptButton和CancelButton分别被设置为它们。
当我按Enter或在内部对话框中单击确定时,外部对话框也会关闭。我看不到我在做什么 - 这是预期的行为?
我可以提供代码,但我不想把它弄乱。
发生这种情况是因为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 4中没有被修复。
外部对话框是通过模态[通过.ShowDialog]运行的吗?您应该能够在调试器的调用后放置一个断点。但我想你不会问是否对你正在做的事情没有一些微妙的... – 2009-07-14 09:56:20
是的,我穿过代码,但它只是从内到外弹出而没有碰到任何东西。 – serialhobbyist 2009-07-14 10:20:00