Domanda ("profonda") sulle applicazioni WinForms

venerdì 25 agosto 2006 - 19.10

paolopat Profilo | Junior Member

Ciao a tutti, poichè mi sono avvicinato da poco alle applicazioni WinForms dopo aver lavorato per tanto tempo con ASP.Net avrei una problematica da porre. Se si considera una qualsiasi applicazione Windows, si osserva che essa è sempre caratterizzata da un menu superiore e da una barra di stato inferiore, oltre alla parte centrale che ospita le funzionalità dell'applicazione. Se si utilizzano le voci di menu, il contenuto della parte centrale cambia...proprio perchè stiamo utilizzando funzionalità diverse del programma. La domanda è...su cosa si basa questo cambiamento ? ...mi spiego meglio, sottoponendovi le mie ipotesi di realizzazione.

1) Ogni qual volta clicco su una voce di menu, si apre una nuova form con lo stesso menu, con la stessa barra di stato ma con il contenuto che dipende dalla funzionalità scelta. Ovviamente questo prevede la chiusura del form precedente. Questa soluzione non mi sembra la migliore...troppa duplicazione del codice.

2) Il form è sempre uno solo e magari cliccando di volta in volta su una voce di menu, non si fa altro che istanziare magari un Panel (oppure uno user control personalizzato) con i controlli relativi.

3) L'applicazione è del tipo MDI per cui il menu e la barra di stato sono nella finestra principale ed ogni volta che si clicca su una voce, si apre il form corrispondente (magari utilizzando il Pattern Singleton) per evitare duplicazioni.

Ce ne sono altre ? Qual'è la soluzione tipica per realizzare un'applicazione WinForms con un menu in modo che, cliccando di volta in volta su una voce di menu diversa, compaiano le funzionalità (controlli....textbox, listbox,...) associate.

Grazie a tutti.

us01739 Profilo | Expert

Ciao,
anche io non è molto che sviluppo applicazione, ma l'idea che mi sono fatto è che non si possa dare una risposta giusta, nel senso che volta per volta dipende dalle "dimensioni" dell'applicazione stesse.
Per quanto mi riguarda, se la cosa prevedesse molte videate farei dei pannelli che con la propieta visible settata a true o false in base ai casi..

Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

paolopat Profilo | Junior Member

Ma se alcuni controlli di una funzionalità devono comparire nella stessa posizione dei controlli di un'altra funzionalità, questa "sovrapposizione" crea problemi nella fase del design del form. L'unica soluzione sarebbe creare i panel come controlli utente e poi istanziali al runtime da codice. Giusto ?

us01739 Profilo | Expert

No, la sovrapposizione non crea nessun problema "visivo".
E' piuttosto probabile che li crei a te in fase di svilppo se quando utilizzi il layout grafico e non del codice.
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

paolopat Profilo | Junior Member

infatti è questo ciò che intendevo...non ci sono problemi al funzionamento dell'applicazione ma nella fase di design del form. Però mi pongo una domanda. Supponiamo di avviare una funzinalità per cui l'appicazione istanzia al runtime il panel con i controlli relativi. Supponiamo di modificare i valori dei controlli (es. scrivo un testo in una textbox). A questo punto, dal menu seleziono un'altra funzionalità (per cui verrà istanziato un altro panel) e poi torno alla funzionalià precedente....non perdo i valori modificati nei controlli ? (es. il testo che avevo scritto) Usi il pattern Singleton per istanziare i Panel ? In modo che di un panel posso avere sempre e solo un'istanzia.
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