B6. NumericUpDown e DomainUpDown
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
- 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
Numeri a caso
Ed ecco il codice:
Class Form1 'Il numero da indovinare Private NumberAs Byte 'Determina se l'utente ha già dato la sua risposta Private TriedAs Boolean Private Sub cmdGenerate_Click(ByVal senderAs System.Object, _ByVal eAs System.EventArgs)Handles cmdGenerate.Click 'Crea un nuovo oggetto Random in grado di generare numeri casuali Dim RndAs New Random() 'Genera un numero aleatorio tra 0 e 100 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 senderAs System.Object, _ByVal eAs System.EventArgs)Handles cmdTry.Click 'Se si è già provato, esce dalla procedura If TriedThen 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 = NumberThen 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 = NumberEnd 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.
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



