我使用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