2009-07-14 57 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中沒有被修復。