Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida al Visual Basic .NET - Label e Textbox

Guida al Visual Basic .NET

Capitolo 55° - Label e Textbox

<< Precedente Prossimo >>
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.


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:
  • AutoSize : se attiva, ridimensiona la label per aderire alla lunghezza del testo. Il ridimensionamento avviene solo in lunghezza, a meno che il testo non contenga esplicitamente un carattere "a capo". Se disattivata, invece, il testo della label verrà automaticamente spostato per rientrare nei limiti imposti dalla sua dimensione;
  • TextAlign : permette di allineare il testo in 9 modi diversi, combinando i tre valori di allineamente verticale (Top, Center, Bottom) con i tre valori di allineamento orizzontale (Left, Center, Right). L'allineamento non è effettivo se AutoSize = True.
Dopo aver modificato le proprietà della form come nella lezione scorsa, l'interfaccia si presenterà pressapoco così:

LabelExample.jpg


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. Impostando questa proprietà, si maschera automaticamente il testo;
  • ReadOnly : determina se l'utente può modificare il testo della textbox;
  • ScrollBars : proprietà enumerata che specifica se le barre di scorrimento devono essere presenti. L'enumeratore accetta quattro valori: None (nessuna scrollbar), Vertical (solo verticale), Horizontal (solo orizzontale), Both (entrambe);
Ora aggiungiamo una textbox di nome txtRadius, appena sotto la label.


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 btnArea, la finestra sarà simile a questa:

LabelExample2.jpg
Doppio click sul pulsante per aprire l'editor di codice sull'evento Click di btnArea:
Public Class Form1
 
    Private Sub btnArea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnArea.Click
        Dim Radius As Single = txtRadius.Text
        Dim Area As Single
        Area = Radius ^ 2 * Math.PI
        MessageBox.Show("L'area del cerchio è " & Area & ".", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub
 
End Clas
Prima di far correre il programma, bisogna ricordarsi che i numeri decimali immessi in input devono avere la virgola, e non il punto.
Da notare che abbiamo assegnato una stringa a un valore single: come già detto, in VB.NET, le conversioni implicite vengono eseguite automaticamente quando sono possibili e Option Strict è disattivata.
Tuttavia, se l'utente immettesse una parola, il programma andrebbe in crash: vediamo quindi di raffinare il codice così da intercettare l'eccezione generata.
Public Class Form1
 
    Private Sub btnArea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnArea.Click
        Try
            Dim Radius As Single = txtRadius.Text
            Dim Area As Single
            Area = Radius ^ 2 * Math.PI
            MessageBox.Show("L'area del cerchio è " & Area & ".", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ICE As InvalidCastException
            MessageBox.Show("Inserire un valore numerico valido!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
 
End Class 
Ma non basta ancora. I numeri negativi o nulli vengono comunque accetati, ma per definizione una lunghezza non può avere misura non positiva, perciò:
Public Class Form1
 
    Private Sub btnArea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnArea.Click
        Try
            Dim Radius As Single = txtRadius.Text
 
            If Radius <= 0 Then
                Throw New ArgumentException()
            End If
 
            Dim Area As Single
            Area = Radius ^ 2 * Math.PI
            MessageBox.Show("L'area del cerchio è " & Area & ".", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ICE As InvalidCastException
            MessageBox.Show("Inserire un valore numerico valido!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch AE As ArgumentException
            MessageBox.Show("Il raggio non può essere negativo o nullo!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub
 
End Class
<< Precedente Prossimo >>
A proposito dell'autore

C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...