Casino online











Mercato forex






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


Numeri a caso

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

    Private Sub cmdGenerate_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cmdGenerate.Click
        'Crea un nuovo oggetto Random in grado di generare numeri casuali
        Dim Rnd As 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 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.




 

The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.