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 - NumericUpDown e DomainUpDown

Guida al Visual Basic .NET

Capitolo 59° - NumericUpDown e DomainUpDown

<< Precedente Prossimo >>

NumericUpDown

Questo controllo torna utile quando si vuole proporre all'utente una scelta di un numero, intero o decimale, compreso tra un minimo e un massimo. Ad esempio, il semplice programma che andrò a illustrare in questo capitolo chiede di indovinare un numero casuale da 0 a 100 generato dal computer. Con l'uso di una textbox, l'utente potrebbe commettere un errore di battitura e inserire in input caratteri non validi, mandando così in crash il programma: la soluzione potrebbe essere usare un Try, ma si sprecherebbe spazio, o un controllo Masked TextBox, ma in altri casi potrebbe risultare limitativo o pedante, dato che richiede un preciso numero di caratteri immessi. Usando invece una combobox o una listbox si dovrebbero aggiungere manualmente tutti i numeri con un for, sprecando spazio nel codice. La soluzione ideale sarebbe fare uso di NumericUpDown. Le proprietà caratteristiche:

  • DecimalPlaces : i posti decimali dopo la virgola. Se impostata a 0, sarà possibile immettere solo numeri interi
  • Hexadecimal : determina se visualizzare il numero in notazione esadecimale (solo per numeri interi positivi)
  • Increment : il fattore di incremento/decremento automaticamente aggiunto/sottratto quando l'utente clicca sulle frecce del controllo
  • InterceptArrowKey : determina se il controllo debba intercettare e interpretare la pressione delle frecce direzionali su/giù da testiera
  • Maximum : massimo valore numerico
  • Minimum : minimo valore numerico
  • ThousandSeparator : indica se visualizzare il separatore delle migliaia
  • Value : il valore indicato
  • UpDownAlign : la posizione delle frecce sul controllo

Dopo aver posizionato questi controlli:

  • Una Label Label1, Text = "Clicca Genera per generare un numero casuale, quindi prova a indovinare!"
  • Un pulsante cmdGenerate, Text = "Genera"
  • Un pulsante cmdTry, Text = "Prova"
  • Un NumericUpDown nudValue, con le proprietà standard
  • Una Label lblNumber, Text = "***", Font = Microsoft Sans Serif Grassetto 16pt, AutoSize = False, TextAlign = MiddleCenter

Disponeteli in modo simile a questo:

NumericUpDown.jpg
Ed ecco il codice:

Class Form1
    'Il numero da indovinare
    Private Number As Byte
    'Determina se l'utente ha già dato la sua risposta
    Private Tried As Boolean
    'Crea un nuovo oggetto Random in grado di generare numeri
    'casuali
    Dim Rnd As New Random()

    Private Sub cmdGenerate_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cmdGenerate.Click
        'Genera un numero aleatorio tra 0 e 99 e lo deposita in
        'Number
        Number = Rnd.Next(0, 100)
        'Imposta Tried su False
        Tried = False
        'Nasconde la soluzione
        lblNumber.Text = "***"
    End Sub

    Private Sub cmdTry_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cmdTry.Click
        'Se si è già provato, esce dalla procedura
        If Tried Then
            MessageBox.Show("Hai già fatto un tentativo! Premi " & _
            "Genera e prova con un altro numero!", "Numeri a caso", _
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        'Se NumericUpDown corrisponde al numero generato,
        'l'utente vince
        If nudValue.Value = Number Then
            MessageBox.Show("Complimenti, hai vinto!", "Numeri a caso", _
            MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            MessageBox.Show("Risposta sbagliata!", "Numeri a caso", _
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If

        'Ormai l'utente ha fatto la sua scelta
        Tried = True
        'Fa vedere la soluzione
        lblNumber.Text = Number
    End Sub
End Class 

 

DomainUpDown

Questo controllo è molto simile come stile grafico a quello appena analizzato solo che, anzichè visualizzare numeri in successione, visualizza semplici elementi testuali come le liste dei capitoli precedenti. È una specie di incrocio fra questi tipi di controllo: gode delle proprietà Minimum e Maximum, ma anche della proprietà Items, che stabilisce la lista ordinata di elementi da cui prelevare le stringhe.

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