2015-05-29 6 views
5

Ho un Form1 con un pulsante. Quando si fa clic sul pulsante, questo blocco di codice viene eseguito:Sapere quando il modulo figlio è chiuso

Form2 frm = new Form2(); 
frm.Name = "Form" + musteriNumarasi.ToString(); 
frm.Text = "Kullanıcı - " + musteriNumarasi.ToString(); 

Diciamo che ho cliccato tre volte. Ora ci sono quattro forme: Principale, Bambino1, Bambino2, Bambino3. Quando l'utente chiude uno dei moduli figlio, il modulo principale deve sapere quale è chiuso. Come lo posso fare?

+3

Un modo è che il genitore ascolti l'evento chiuso del modulo del figlio. – ryanyuyu

+0

Stabilisci un listener sul modulo padre per l'evento close del bambino o, meno semanticamente, nell'evento close del bambino puoi eseguire il codice sul tuo form principale. –

+0

Iscriviti all'evento FormClosed. O usi un gestore di eventi dedicato per ogni bambino specifico o uno comune, l'argomento * sender * ti dice quale è stato chiuso. –

risposta

8

Iscriviti alla Closed Event

Form2 frm = new Form2();  
frm.FormClosed += new FormClosedEventHandler(Form_Closed); 

void Form_Closed(object sender, FormClosedEventArgs e) 
{ 
    Form2 frm = (Form2)sender; 
    MessageBox.Show(frm.Name); 
} 
+0

Perché qualcuno ha votato la mia risposta? –

+0

Questo dà un errore di compilazione. Errore \t CS0029 \t Impossibile convertire implicitamente il tipo 'System.EventHandler' in 'System.Windows.Forms.FormClosedEventHandler' – Boggartfly

-2

aggiungere queste righe al codice per gestire l'evento di forma chiusa o chiusura

frm.Closing += Form_Closing; 
frm.Closed += Form_Closed; 

aggiungere i seguenti metodi alla classe corrente

void Form_Closing (object sender,EventArgs e){ 
//Handler form Closing Event 
} 
void Form_Closed (object sender,EventArgs e){ 
//Handler form Closed Event 
} 
+0

'sender' sarà il riferimento sull'oggetto Form che ha attivato l'evento – Aladdin

+0

È necessario modificare la risposta anziché utilizzare i commenti. – ryanyuyu

+0

questo commento è solo un consiglio per aiutarti con la mia risposta. – Aladdin

-2
Form2 frm = new Form2(); 

frm.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frm _FormClosed); 

. . .

private void frm_FormClosed(object sender, EventArgs e) 
{ 
    //Runs after closing child :) 
}