PDA

View Full Version : [C#] Gestione chiusura finestre


lebon
11-09-2012, 17:15
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 ?

Dânêl
11-09-2012, 18:50
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).

simo8
11-09-2012, 23:42
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.

lebon
12-09-2012, 15:11
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.

Dânêl
12-09-2012, 15:58
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();

lebon
12-09-2012, 18:23
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 ;)