Switch tra forms in WinForms

lunedì 12 aprile 2010 - 15.57

flea777 Profilo | Newbie

Salve a tutti,
Avrei un problemino per il quale chiedo aiuto a voi...

Io dovrei creare un'applicazione fullscreen simil-ATM in WinForms la quale, dopo il primo avvio, rimane sempre attiva.
Sono ancora in fase "decisionale" e soprattutto non sono affatto esperto di WinForms pertanto sono alla ricerca di qualche spunto...

Nello specifico quello che dovrei fare è una app in cui l'utente possa selezionare dei prodotti e procedere con l'acquisto e il pagamento.
L'applicazione deve essere sempre attiva e a schermo intero e, man mano che l'utente va avanti e indietro per le schermate io devo rendere una schermata visibile e "nascondere" le altre (o comunque posizionarne una al top e lasciare le altre dietro) passando anche dei parametri.

Quale può essere una soluzione affidabile e funzionale per costruire l'applicazione?
Creare tante form all'avvio quante sono le schermate dell'applicazione e rendere visibile solo quella che serve? Creare una form "principale" e farne creare una nuova ogni volta che serve?

Ho valutato anche opzioni tipo MVC o MVP (di cui non sono riuscito a trovare neanche un esempio serio per WinForms) ma per ora sono un tantinello confuso…

Grazie infinitamente in anticipo a chi mi aiuterà...
Manuel

AntCiar Profilo | Expert

Ciao.

Io farei in questo modo:

creerei un UserControl per ogni Form da visualizzare (con i relativi oggetti grafici e funzioni di controllo all'interno).

Poi creerei una Form generale con proprietà TopMost = true contentente all'interno un panel e i bottoni per lo spostamento avanti e indietro. A seconda del bottone premuto (avanti o indietro) visualizzo nel panel l'userControl che mi interessa.

Per quanto riguarda il passaggio dei dati, aggiungerei ogni UserControl visualizzato ad una lista di controlli in modo da poter accedere ad ogni singola schermata (anche se non visibile) per poter leggere i valori inseriti dall'utente.

Ciao ciao
Cristian Barca

flea777 Profilo | Newbie

Ciao Cristian,
grazie mille per la dritta.

Una cosa però non andrebbe bene nel tuo scenario, ovvero che i pulsanti Avanti/Indietro non sono semplicemente dei pulsanti di navigazione ma devono eseguire una logica applicativa.

Per quanto riguarda la soluzione di aggiungere gli UserControl ad una lista di controlli, questa mi diventerebbe "infinita" in quanto l'applicazione cicla infinitamente (a meno che non decido un momento in cui svuotare questa lista, come ad esempio la visualizzazione della form iniziale).

Ciao e grazie,
Manuel

AntCiar Profilo | Expert

>Ciao Cristian,
>grazie mille per la dritta.
>

>Una cosa però non andrebbe bene nel tuo scenario, ovvero che
>i pulsanti Avanti/Indietro non sono semplicemente dei pulsanti
>di navigazione ma devono eseguire una logica applicativa.
>

Ovviamente. Ho detto Avanti/Dietro con semplicità perchè non consco il "come" deve funzionare. sta a te decidere come abilitare i bottoni.

>Per quanto riguarda la soluzione di aggiungere gli UserControl
>ad una lista di controlli, questa mi diventerebbe "infinita"
>in quanto l'applicazione cicla infinitamente (a meno che non
>decido un momento in cui svuotare questa lista, come ad esempio
>la visualizzazione della form iniziale).

Non intendevo questo. Sicuramente il tuo "singolo ciclo" prevede N passi da completare. Alla fine dei passi svuoti la lista e rimetti nel panel il primo controllo, come se fosse l'avvio del programma.

se riesco ti mando un piccolo esempio di come vedo io la cosa. ciao ciao
>
>Ciao e grazie,
>Manuel

Cristian Barca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5