View Full Version : [C#] Gestione chiusura finestre
Salve, mi trovo avanti ad un picclo problema, poiché sto imparando passo per passo questo linguaggio. Vorrei capire come gestire l'evento di chiusura di una finestra.
Ovvero il mio scopo è questo: Ho una schermata A di "pagina inziale", voglio che alla chiusura della finestra B, aperta tramite un menu nella schermata A, si riapra la schermata inziale A.
Come dovrei muovermi ?
Puoi gestire l'evento formClosed (http://msdn.microsoft.com/it-it/library/system.windows.forms.form.closed) del form B per far ricomparire il form A (per esempio impostando la proprieta Visible a True).
Puoi usare gli User Control .
[Kendall]
12-09-2012, 01:07
Meglio partire con ordine... Quali librerie grafiche usi? wpf o windows form? (la metro ui l'escludo a priori visto che parli di finestre).
Altro particolare, la finestra A, una volta che la finestra B viene aperta che fine fa?
E in ultima, la finestra B è modale oppure no?
Alcune info che ti ho chiesto possono servire come no, ma è per avere una visione di insieme del problema.
La libreria grafica scelta è window form, mentre la finestra A non si chiude ma diventa invisibile per far posto alla finestra B.
Allora diciamo che nella schermata A c'è una un intestazione con una presentazione e 4 riquadri cliccabili per accedere a 4 aree diverse del software. la finestra B è quella finestra dove si sviluppa poi tutto il software.
Utilizzando le considerazioni (giuste e che avevo sottovaluat) di Kendall come:
;38095243']
E in ultima, la finestra B è modale oppure no?
ci sono due vie che dipendono se il form B è modale oppure no.
Ti posso fare due esempi, ma che potrebbero non adattarsi al tuo codice.
Se è modale (lo apri con il comando formB.ShowDialog) puoi fare qualcosa di simile a questo:
formA.Visible = false;
formB.Showdialog();
formA.Visible = true; //questa istruzione viene eseguita solo alla chiusura di B
Se non è modale allora devi gestire l'evento FormClosed per aggiornare formA.Visible.
formA.Visible = false;
formB.FormClosed += delegate {formA.Visible = true;};
formB.Show();
Ottimo ragazzi, vi ringrazio tutti, ho risolto con .Showdialog(); :D
[Kendall]
12-09-2012, 19:03
Ottimo. La via della finestra modale in effetti era, come hai potuto vedere dal codice di Dânêl, molto semplice e immediata. Nel caso delle non modali era comunque banale, ma richiedeva qualche considerazione in più.
Buona programmazione ;)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.