Guida al Visual Basic .NET
Capitolo 59° - NumericUpDown e DomainUpDown
NumericUpDownQuesto 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:
Dopo aver posizionato questi controlli:
Disponeteli in modo simile a questo: 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
DomainUpDownQuesto 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.
C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...
|