B4. ListBox e ComboBox
Questi controlli sono liste con stile visuale proprio in grado di contenere elementi. La gestione di tali elementi è molto simile a
quella delle List generic o degli ArrayList. L'unica differenza sta nel fatto che in questo caso, tutte le modifiche vengono rese visibili
sull'interfaccia e influiscono, quindi, su ciò che l'utente può vedere. Una volta aggiunte alla windows form, il loro aspetto sarà simile
a questo:


Le proprietà più interessanti sono:
ListBox
ComboBox
Le proprietà più interessanti sono:
- Solo per ListBox:
- ColumnWidth : indica la larghezza delle colonne in una listbox in cui MultiColumn = True. Lasciare 0 per il valore di default
- HorizontalExtent : indica di quanti pixel è possibile scorrere la listbox in orizzontale, se la scrollbar orizzontale è attiva
- HorizontalScrollbar : determina se attivare la scrollbar orizzontale. Di solito, questa proprietà viene impostata a True quando la listbox dispone di più colonne
- MultiColumn : determina se la listbox è a più colonne. In questa modalità, una volta terminata l'altezza della lista, gli elementi
vengono posizionati di lato anzichè sotto, ed è quindi possibile visualizzarli spostandosi a destra o a sinistra. Un esempio visuale:
ListBox MultiColumn - ScrollAlwaysVisible : determina se le scrollbar vengono visualizzate sempre, indipendentemente dal numero di elementi presenti. Infatti quando questa proprietà è disabilitata, se gli elementi sono pochi e possono essere posizionati nell'area della lista senza nasconderne nessuno, non viene visualizzata la scrollbar, che appare quando gli elementi cominciano a diventare troppi. Con questa proprietà attiva, essa è sempre visibile e, se inutilizzata, si disabilita automaticamente
- SelectionMode : proprietà enumerata che determina in quale modo sia possibile selezionare gli elementi. Può assumere quattro valori: None (non è possibile selezionare niente), One (un solo elemento alla volta), MultiSimple (più elementi selezionabili con un click), MultiExtended (più elementi, selezionabili solo tenendo premuto Ctrl e spostando il mouse sopra di essi)
- Solo per ComboBox:
- AutoComplete... : tutte le proprietà il cui nome inizia per "AutoComplete" sono uguali a quelle citate nella lezione precedente
- DropDownHeight : determina l'altezza, in pixel, del menù a discesa
- DropDownStyle : determina lo stile del menù a discesa. Può assumere tre valori: Simple (il menù a discesa è sempre visibile, e
può essere assimilato a una listbox), DropDown (stile normale come nell'immagine di esempio proposta a inizio capitolo, ma è possibile
modificare il testo dell'elemento selezionato scrivendo entro la casella), DropDownList (stile normale, non è possibile modificare l'elemento
selezionato in alcun modo, se non selezionandone un altro). Questa è un'immagine di una combobox con DropDownStyle = Simple:
ComboBox Simple DropDown - FlatStyle : lo stile visuale della ComboBox. Può assumere quattro valori: Flat o Popup (la combobox è grigia e schiacciata, senza contorni 3D), System o Professional (la combobox è azzurra e rilevata, con contorni 3D)
- MaxDropDownItems : il numero massimo di elementi visualizzabili nel menù a discesa
- MaxLength : determina il massimo numero di caratteri di testo che possono essere inseriti come input nella casella della combobox. Questa proprietà ha senso solo se DropDownStyle non è impostata su DropDownList, poichè tale stile impedisce di modificare il contenuto della combobox tramite tastiera, come già detto
- Per entrambe le liste:
- DrawMode : determina la modalità con cui ogni elemento viene disegnato. Può assumere tre valori: Normal, OwnerDrawFixed e OwnerDrawVariable. Il primo è quello di default; il secondo ed il terzo specificano che i controlli devono essere disegnati da una speciale procedura definita dal programmatore nell'evento DrawItem. Per ulteriori informazioni su questo procedimento, vedere l'articolo Font e disegni nelle liste nella sezione Appunti.
- FormatString : dato che queste liste possono contenere anche numeri e date (e altri oggetti, ma non è consigliabile aggiungere tipi diversi da quelli base), la proprietà FormatString indica come tali valori debbano essere visualizzati. Cliccando sul pulsante con i tre puntini nella finestra delle proprietà su questa voce, apparirà una finestra di dialogo con i seguenti formati standard: No Formatting, Numeric, DateTime e Scientific.
- FormatEnabled : determina se è abilitata la formattazione degli elementi tramite FormatString
- IntegralHeight : quando attiva, questa proprietà forza la lista ad assumere un valore di altezza (Size.Height) che sia un multiplo
di ItemHeight, in modo tale che gli elementi siano sempre visibili interamente. Se disattivata, gli elementi possono anche venire "tagliati"
fuori dalla lista. Un esempio:
Lista con IntegralHeight = False - ItemHeight : altezza, in pixel, di un elemento
- Items : collezione a tipizzazione debole di tutti gli elementi. Gode di tutti i metodi consueti delle liste, quali Add, Remove, IndexOf, Insert, eccetera...
- Sorted : indica se gli elementi devono essere ordinati alfabeticamente
Detto ciò, è possibile procedere con un semplice esempio. Il programma che segue permette di aggiungere un qualsiasi testo ad una lista. Prima di iniziare a scrivere il codice, bisogna includere nella windows form questi controlli:
- Una listbox, di nome lstItems
- Un pulsante, di nome cmdAdd, con Text = "Aggiungi"
- Un pulsante, di nome cmdRemove, con Text = "Rimuovi"
Anteprima
Il codice:Public Class Form1Private Sub cmdAdd_Click(ByVal senderAs Object , _ByVal eAs EventArgs)Handles cmdAdd.ClickDim SAs String 'Inputbox(ByVal Prompt As Object, ByVal Title As String, _ 'ByVal DefaultResponse As String) 'Visualizza una finestra con una label esplicativa 'il cui testo è racchiuso in Prompt, con un titolo Title e 'una textbox con un testo di default DeafultResponse: una 'volta che l'utente ha inserito la stringa nella textbox 'e cliccato OK, la funzione restituisce la stringa immessa S = InputBox("Inserisci una stringa:", "Inserimento stringa", _ "[Stringa]") 'Aggiunge la stringa alla lista lstItems.Items.Add(S)End Sub Private Sub cmdRemove_Click(ByVal senderAs Object , _ByVal eAs EventArgs)Handles cmdRemove.Click 'Se è selezionato un elemento... If lstItems.SelectedIndex >= 0Then 'Lo elimina lstItems.Items.RemoveAt(lstItems.SelectedIndex)End If End Sub End Class
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



