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