Я открываю форму как модальный диалог, используя ShowDialog. Это диалоговое окно, в свою очередь, позволяет снова открыть другую форму как модальное диалоговое окно с помощью ShowDialog.
Когда самое внутреннее диалоговое окно закрывается, его родительский диалог также закрывается.Почему это происходит и как я могу предотвратить это?
Чтобы проиллюстрировать это, я создал версию задачи «Hello World».
Форма 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;
Шаги для воспроизведения:
Форма 3 закрывается с DialogResult == Cancel, как и ожидалось, но форма 2 также закрывается с DialogResult == Cancel (не ожидается).