Area di riferimento
- Creating a UI for a Windows Forms Applications by Using Standard Controls
- Manage control layout on a Windows Form
- Group and arrange controls by using the Panel Control, GroupBox control, TabControl, FlowLayoutPanel control and TableLayoutPanel control
- Use the SplitContainer control to create dynamic container areas
- Add and configure a Windows Forms control
- Create and configure menus
Controls
Utilizzare la Toolbox (View -> Toolbox) per inserire sulla form dei controlli è una operazione molto semplice e non richiede particolari spiegazioni. Altrettanto semplice è utilizzare la finestra delle Properties (View -> Properties WIndows) per cambiere le proprietà dei controlli come colori, font, posizione, dimensioni ecc.
I controlli più utilizzati sono Button, CheckBox, CheckedListBox, ComboBox, DateTimePicker, Label, ListBox, ListView, NumericUpDown, PictureBox, ProgressBar, RadioButton, TextBox. Per una descrizione dettagliata delle loro proprietà principali guardare la documentazione msdn.
I controlli Panel, GroupBox, TabControl, FlowLayoutPanel, TableLayoutPanel sono dei controlli contenitore che permettono di contenere al loro interno altri controlli. Il loro utilizzo in fase di progettazione è molto semplice. Per aggiungere un controllo al loro interno basta effettuare semplici operazioni di drag and drop. Tutti questi oggetti hanno una collection Controls a cui è possibile accedere per inserire o rimuovere dinamicamente controlli.
Particolarmente comode sono le proprietà Anchor e Dock che dettano il comportamento che deve avere un controllo rispetto al controllo parent. Impostare queste proprietà permette il ridimensionamento automatico dei controlli al ridimensionamento della form da parte dell'utente. La proprietà Dock fa in modo che il controllo si espanda per occupare tutta la regione del controllo parent. La proprietà anchor invece permette di specificare il mantenimento automatico della distanza da un lato del controllo al corrispondente lato del parent.
Il controllo SplitContainer permette di creare delle sottosezioni della form dove uno Splitter divide lo SplitContainer in due controlli SplitterPanel che si comportano in modo simile al controllo Panel. La proprietà Orientation permette di impostare se lo Splitter deve essere orizzontale o verticale.
Non spreco molto tempo nell'elencare le proprietà di tutti i possibili controlli perchè ritengo che il modo più rapido per conoscerli è fare delle prove direttamente con lo strumento di sviluppo Visual Studio e analizzare il codice autogenerato.
Best Practices per la progettazione di intefacce utente
Le principali considerazinoi per la progettazione dell'interfaccia utente sono:
- Semplicità
- Una interfaccia complessa è difficile da imparare e ciò comporta una perdita di produttività
- Impostare i valori di default nei controlli al valore più comune per l'utente
- Posizione dei controlli
- La posizione dei controlli sulla interfaccia utente dovrebbe riflettere la loro relativa importanza e frequenza di uso
- I controlli che visualizzano dati correlati dovrebbero essere raggruppati insieme sulla form (usare i container)
- Consistenza
- Una interfaccia utente deve esibire una progettazione consistente attraverso le varie form dell'applicazione
- La consistenza è creata dall'uso di colori, font, dimensioni e tipi dei controlli
- Estetica
- Quando possibile una interfaccia utente dovrebbe essere invitante e piacevole
- La semplicità e la chiarezza non devono mai essere sacrificate per la bellezza grafica
- Mai affidarsi al colore per trasmettere informazioni
- Evitare font che sono difficili da leggere (Usare font come Times New Roman o Arial)
Menu
La creazione di Menu mediante l'utilizzo di Visual Studio è veramente semplice. Basta semplicemente inserire il componente MenuStrip e poi lavorare direttamente sul menu per inserire le varie voci e sottovoci. Un doppio click su ciascuna di esse permette di specificare il codice associato al click da parte dell'utente. Per aggiungere o rimuovere dinamicamente menu è possibile accedere alla collection Items di MenuStrip e alla collection DropDownItems per l'oggetto ToolStripMenuItem.
Il componente ContexMenuStrip permette di definire un menu che sarà visualizzato quando l'utente cliccherà con il tasto destro su un particolare controllo. Affinchè questo succeda basterà assegnare alla proprietà ContextMenu del controllo il riferimento al componente ContexMenuStrip creato. Visual Studio permette di realizzare tutto ciò in modo completamente visuale !
Per assegnare access keys per l'accesso alle varie voci di menu basta utilizzare il carattere & prima della lettera desiderata mentre per impostare shortcut keys basta impostare la proprietà ShortcutKeys.