我使用ShowDialog打開窗體作爲模態對話框。該對話反過來允許使用ShowDialog再次打開另一個窗體作爲模式對話框。爲什麼關閉嵌套子對話框還關閉父對話框?
當最內層的對話框關閉時,這也會導致其父對話框關閉。爲什麼會發生這種情況,我該如何預防它?
我已經創建了一個hello世界版本的問題來說明這一點。
形式1:
private void OpenForm2Button_Click(object sender, EventArgs e)
{
Form2 testForm = new Form2();
DialogResult dialogResult = new DialogResult();
dialogResult = testForm.ShowDialog();
MessageBox.Show("Form 2 returned: " + Convert.ToString(dialogResult));
}
表格2:
...
this.Form2OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Form2CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
...
this.AcceptButton = this.Form2OKButton;
this.CancelButton = this.Form2CancelButton;
...
private void OpenForm3Button_Click(object sender, EventArgs e)
{
Form3 testForm = new Form3();
DialogResult dialogResult = new DialogResult();
dialogResult = testForm.ShowDialog();
MessageBox.Show("Form 3 returned: " + Convert.ToString(dialogResult));
}
表格3:
...
this.Form3OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Form3CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
...
this.AcceptButton = this.Form3OKButton;
this.CancelButton = this.Form3CancelButton;
重現步驟:
- 點擊 「打開表單2」
- 點擊 「打開型3」
- 點擊 「取消」
表3與關閉DialogResult ==按預期方式取消,但表單2也會以DialogResult ==取消(未預期)關閉。
Mmh的,我試着和它[工作正常在我的機器上(http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128776ff992970c- PI)。我們應該看到整個(真實)代碼來理解問題。您可以使用http://pastebin.com/粘貼很長一段代碼... – digEmAll 2012-03-20 18:04:33
也適用於我。 – 2012-03-20 18:08:42
我在這裏粘貼的代碼:http://pastebin.com/Dj81gAze – 2012-03-20 18:34:12