Apre un modulo come finestra di dialogo modale utilizzando ShowDialog. Questa finestra a sua volta consente di aprire nuovamente un altro modulo come una finestra di dialogo modale utilizzando ShowDialog.Perché la chiusura di una finestra di dialogo figlio nidificata chiude anche la finestra di dialogo principale?
Quando la finestra di dialogo più interna è chiusa, anche la finestra di dialogo principale viene chiusa. Perché questo si verifica e come posso prevenirlo?
Ho creato una versione mondiale del problema per illustrare questo.
Forma 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));
}
Forma 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));
}
Forma 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;
Procedura per riprodurre:
- Fare clic su "Open Form 2"
- Fare clic su "Open Form 3"
- su "Annulla"
Modulo 3 si chiude con DialogResult == Annulla come previsto, ma il modulo 2 si chiude anche con DialogResult == Annulla (non previsto).
Mmh, ho provato ed è [funziona bene sulla mia macchina] (http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128776ff992970c- pi). Dovremmo vedere l'intero codice (reale) per capire il problema. Puoi usare http://pastebin.com/ per incollare lunghi pezzi di codice ... – digEmAll
Funziona anche per me. –
Ho incollato il codice qui: http://pastebin.com/Dj81gAze –