Salve Pit77, ho avuto anch’io un problema simile, secondo me la chiamata a ShowDialog l’hai fatta in maniera sbagliata, come ho fatto io puoi avere un controllo maggiore del perché il Form2 è stato chiuso.
Ti posto una parte del codice di Form1
private void btnPesa_Click(object sender, EventArgs e) {
//…
frmPesaInfo frm2 = new frmPesaInfo(ntC);
DialogResult dRes = frm2.ShowDialog();
switch (dRes) {
case DialogResult.Cancel:
case DialogResult.Ignore:
break;
case DialogResult.Abort:
this.puoPesare = false;
break;
case DialogResult.Retry:
ntC = frm2.NoteColl;
this.isDirty = true;
break;
default:
MessageBox.Show(dRes.ToString());
break;
}
//…
}
Come vedi il mio frmPesaInfo corrisponderebbe al tuo frmListaIngredienti (Form2), ma nel mio caso Form1 passa l’oggetto ntC (è una specie di List) a frmPesaInfo ed una volta corretti i dati, li ripassa a Form1. Gli ho creato un altro costruttore apposito (ovviamente che chiama quello senza parametri per la questione di InitializeComponent). NoteColl dovrebbe corrispondere alla tua sIngredienti, però per la fretta e per semplicità l’ho lasciata public.
Ovviamente frmPesaInfo è un complesso MessageBox con i 3 pulsanti
private void btnAggiorna_Click(object sender, EventArgs e) {
// …
this.DialogResult = DialogResult.Retry;//come ultima istruzione: chiude il form col relativo motivo
}
private void btnSalta_Click(object sender, EventArgs e) {
// …
this.DialogResult = DialogResult.Ignore;
}
private void btnStop_Click(object sender, EventArgs e) {
// …
this.DialogResult = DialogResult.Abort;
}
Beh, puoi benissimo gestirtelo in un’altra maniera, il mio caso può essere diverso dal tuo!