Я открываю форму как модальное диалоговое окно, используя ShowDialog.Это диалоговое окно, в свою очередь, позволяет снова открыть другую форму как модальное диалоговое окно с использованием ShowDialog.
Когда закрывается самый внутренний диалог, это также приводит к закрытию его родительского диалога.Почему это происходит и как я могу предотвратить это?
Я создал версию этой проблемы, чтобы проиллюстрировать это.
Форма 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 == Отмена (не ожидается).