B3. Label e TextBox
In questo capitolo mi occuperò di altri due comunissimi controlli: label (etichetta) e textbox (casella di testo). L'esempio della
lezione consiste nello scrivere un programma che, dato il raggio, calcola l'area del cerchio.
Dopo aver modificato le proprietà del form come nella lezione scorsa, l'interfaccia si presenterà pressapoco così:


Doppio click sul pulsante per aprire l'editor di codice sull'evento Click di cmdArea:
Da notare che si è assegnato una stringa a un valore single: come già detto, Vb.Net esegue automaticamente le conversioni quando sono possibili. Tuttavia se l'utente immettesse una parola il programma andrebbe in crash: vediamo quindi di raffinare il codice così da intercettare l'eccezione generata.
Label
Il controllo Label serve per visualizzare un qualsiasi messaggio o testo sulla superficie della windows form. Per questo progetto, occorre
aggiungere una label all'interno del form designer e impostare il testo su "Introdurre il raggio di un cerchio:". Poichè questo tipo di
controllo è utilizzatissimo, è inutile assegnare un nome significativo a ogni sua istanza, a meno che non la si debba modificare durante
l'esecuzione del programma. Solo due proprietà meritano di essere menzionate. La prima è AutoSize, che permette alla label di autoridimensionarsi
sulla base della lunghezza del testo: se impostato su False, invece, sarà possibile determinare in fase disviluppo i margini predefiniti entro
i quali dovrà stare il testo. AutoSize è molto importante quando si ha a che fare con l'allineamento: infatti, poichè la label viene
ridimensionata automaticamente, non si nota alcun tipo di allineamento; mentre, se è impostata a False, è possibile allineare il testo.
Quest'ultima impostazione si ottiene modificando la seconda proprietà più importante: TextAlign.Dopo aver modificato le proprietà del form come nella lezione scorsa, l'interfaccia si presenterà pressapoco così:
Una label
TextBox
Costituisce il controllo di input per eccellenza, il più usato in tutte quelle situazioni che richiedono all'utente di immettere dati. Le
proprietà rilevanti sono:
- MaxLength : massima lunghezza del testo, in caratteri.
- AutoCompleteMode : modalità di autocompletamento. Fra i pregi della TextBox vi è la possibilità di "suggerire" all'utente cosa digitare nel caso le prime lettere premute corrispondano all'inizio di una delle parole che il programma ha già elaborato. Per fare un esempio pratico, si comporta allo stesso modo del sistema di composizione T9 dei cellulari, in cui il resto della parola viene "suggerita" prima del suo completamento. L'enumeratore può assumere quattro valori: None (assente), Suggest (viene suggerita la parola facendo apparire sotto la textbox un menù a discesa con tutte le possibili varianti), Append (viene suggerita la parola accodando alle lettere digitate il pezzo mancante evidenziato il blu), AppendSuggest (un'unione di entrambe le precedenti opzioni).
- AutoCompleteSource : fonte dalla quale prelevare le parole dell'autocompletamento. I valori predefiniti indicano risorse di sistema, quali la cronologia (HistoryList, nel caso, ad esempio, la textbox funga da contenitore di indirizzi internet), le cartelle (FileSystemDirectories, ad esempio per facilitare l'immissione di un percorso da tastiera), i file (FileSystem), i files o i programmi aperti di recente (RecentlyUsedList), oppure tutti questi insieme (AllSystemResources). Se impostato su CustomSource, sarà la proprietà AutoCompleteCustomSource a determinare la fonte da cui attingere informazioni.
- CharacterCasing : indica il casing delle lettere. Ci sono tre valori possibili: None (tutte le lettere vengono lasciate così come sono), Upper (tutte le lettere sono convertite in maiuscole) o Lower (tutte in minuscole).
- Lines : restituisce un array di stringhe rappresentanti tutte le righe di testo della textbox, nel caso di una textbox Multiline.
- Multiline : se impostata su True, la textbox sarà ridimensionabile e l'utente potrà inserire un testo che comprende più righe. Quando la proprietà è False, il carattere "a capo" viene respinto.
- PasswordChar : un valore di tipo Char che determina il carattere da visualizzare al posto delle lettere qualora la textbox debba contenere una password. In questo modo si evita che occhi indiscreti possano intravedere le stringhe digitate.
- ReadOnly : determina se l'utente può modificare il testo della textbox
- ScrollBars : proprietà enumerata che specifica se le barre di scorrimento devono essere presente. L'enumeratore accetta quattro valori: None (nessuna scrollbar), Vertical (solo verticale), Horizontal (solo orizzontale), Both (entrambe).
Finire il programma di calcolo
Ultima cosa essenziale per concludere il programma è un pulsante che avvii il calcolo, altrimenti non si potrebbe sapere quando l'utente ha
finito l'immissione e vuole conoscere il risultato. Dopo aver aggiunto il button cmdArea, la finestra sarà simile a questa:Finestra completa
Doppio click sul pulsante per aprire l'editor di codice sull'evento Click di cmdArea:
Prima di far correre il programma, ricordarsi che i numeri decimali immessi in input devono avere la virgola, e non il punto.Private Sub cmdArea_Click(ByVal senderAs Object ,ByVal eAs EventArgs) _Handles cmdArea.ClickDim R, AreaAs Single R = txtRadius.Text 'Raggio alla seconda per pi greco, si può scrivere anche: 'Area = R ^ 2 * Math.PI Area = R * R * Math.PI MessageBox.Show("L'area del cerchio di raggio " & R & " è " & Area, _ "Area", MessageBoxButtons.OK, MessageBoxIcon.Information)End Sub
Da notare che si è assegnato una stringa a un valore single: come già detto, Vb.Net esegue automaticamente le conversioni quando sono possibili. Tuttavia se l'utente immettesse una parola il programma andrebbe in crash: vediamo quindi di raffinare il codice così da intercettare l'eccezione generata.
Private Sub cmdArea_Click(ByVal senderAs Object ,ByVal eAs EventArgs) _Handles cmdArea.ClickTry Dim R, AreaAs Single R = txtRadius.Text 'Raggio alla seconda per pi greco, si può scrivere anche: 'Area = R ^ 2 * Math.PI Area = R * R * Math.PI MessageBox.Show("L'area del cerchio di raggio " & R & " è " & Area, _ "Area", MessageBoxButtons.OK, MessageBoxIcon.Information)Catch ExAs Exception 'Con la reflection prendiamo il nome dell'eccezione 'generata e lo impostiamo come titolo MessageBox.Show("Il valore immesso non è corretto!", _ Ex.GetType.Name, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)End Try End Sub
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



