PDA

View Full Version : [C#] Info requisiti inizio progetto


vinko90
25-11-2015, 00:15
Salve a tutti ragazzi, vorrei un vostro parere su un mio progetto personale che vorrei iniziare a breve.
Voglio creare un software per immagazzinare i progetti personali sul mio nas e salvare info (come directory location ecc..) su database Mysql. Siccome non sono sicuro di quali tool grafici utilizzare vi spiego in breve il comportamento dell applicazione. Per iniziare un piccolo sketch di quello che voglio ottenere:

http://s14.postimg.org/gsw0yu3ox/Immagine.jpg

All'apertura del classico Form1 devo avere una TreeView sulla sinistra che sara riempita dal database scaricando la categoria principale e sottocategoria, es:
-Programmazione
-C#
-Java
-Elettronica
-PCB
...

Quando clicco sul parente piu in basso della categoria, es C# sulla destra voglio caricare una tabella, ed ecco, qui per esempio non so se sia buona cosa caricare un altro form per esempio form2. Ora questa tabella voglio che abbia un header fisso come nell'immagine e alla destra di ogni riga una icona che cliccando posso aprire la corretta locazione della cartella o file dal nas. Pero' facendo un esempio, se la riga 1 viene popolato da un file chiamato PROGETTO1 ed e' alla release 5 deve esserci la possibilit'a di espandere quell oggetto e visualizzare le altre release con le stesse informazioni del genitore e le rispettive icone per aprire il corrispettivo file.
Devo implementare la possibilita' magari tramite un form pop up di poter creare categorie/sottocategorie nella list view, e creare le righe della tabella nel secondo form.
Potrei avere un consiglio su quali sono i componenti grafici piu adatti al mio scopo? Esempio listview o tablegrid ecc.
Conosco bene il C# ma non ho mai fatto questo tipo di implementazioni, potete darmi un consiglio su come potermi avviare? Grazie in anticipo!

Kintaro10
27-11-2015, 10:20
Ciao,

conosci bene win form per le interfacce grafiche, oppure sei all'inizio? Perché in quel caso ti direi di studiare WPF, che, anche a fronte di una curva di apprendimento un poco più lunga, ti da diversi vantaggi (più estensibile, ti permette di gestire meglio l'interfaccia grafica).
In tutti i casi ti consiglierei di fare un form unico e semmai degli user control dedicati; la parte di destra ad esempio lo vedrei bene come un UC.
Se usi winform, per la griglia ti consiglio di usare una datagridview, trovi tantissimi esempi sul web per come usarla al meglio, anche per fare l'effetti apertura di nodo.
In sintesi (se usi win form):

un form unico
a sinistra un treeview
a destra un user control con dentro una datagridview (oppure metti direttamente la datagridview senza creare UC)
corretta l'idea di fare un form nuovo per creare nuove categorie, che verrà aperto in una finestra separata (magari modale)


Per iniziare imposterei così la parte grafica.

Ciao

vinko90
01-12-2015, 09:53
Ciao kintaro, grazie mille per la risposta e scusa per il ritardo. Sono un po incasinato con l'università e il lavoro.
Allora conosco abbastanza bene sia windows form che WPF, per un piccolo progetto a scuola abbiamo anche utilizzato WPF ma per entrambi i casi non ho mai utilizzato connessione al database o tabelle/datagrid. Infatti per me la cosa più difficile sarà studiare come creare oggetti in un datagrid e utilizzare nel migliore dei modi il treeview, in modo che per esempio facendo tasto destro nel datagrid si possono creare altri oggetti nel database e fare l'upload dei file.

Poi potresti spiegarmi gentilmente cosa intendi con: corretta l'idea di fare un form nuovo per creare nuove categorie, che verrà aperto in una finestra separata (magari modale)?

Un'altra piccola domanda, e' un problema usare MySQL per i relativi bind ecc? Il motivo della scelta di mysql e' perché nell'app center del mio naso qnap, c'e solo mysql o postgree come database, quindi intendevo usare quello.

Kintaro10
01-12-2015, 14:00
...
Poi potresti spiegarmi gentilmente cosa intendi con: corretta l'idea di fare un form nuovo per creare nuove categorie, che verrà aperto in una finestra separata (magari modale)?

Intendo dire che la parte di salvataggio va bene farla anche in un form separato. Quindi nel tuo progetto creerai un nuovo form (esempio SaveForm), e scriverai li tutto il codice per salvare i nuovi oggetti. Poi dal menù File della finestra principale lo potrai richiamare semplicemente con
var form = new SaveForm();
form.ShowDialog(); //questo se vuoi aprirlo modale, sennò form.Show();

...
Un'altra piccola domanda, e' un problema usare MySQL per i relativi bind ecc? Il motivo della scelta di mysql e' perché nell'app center del mio naso qnap, c'e solo mysql o postgree come database, quindi intendevo usare quello.
Direi che non hai problemi, puoi anche provare ad usare entity framework che ti semplificherà la vita, vedi ad esempio qua (http://www.codeproject.com/Tips/426790/Using-MySQL-with-Entity-Framework) .

Se usi form, per la visualizzazione dei dati usa la datagridview, trovi un sacco di esempi in giro per la rete, è semplice da usare.