Oppure

Loading
12/04/14 14:10
Roby94
Devi fare una verifica sul valore del texbox, dovrebbe essere un numero!
Oppure puoi risolvere sostituendo il textbox con un componente che accetta solo numeri.
aaa
12/04/14 19:55
R0gerBlack
Postato originariamente da nessuno:

Postato originariamente da R0gerBlack:
ma anche 2108,99 = 2108


No ... in quel caso vale 2109


@nessuno, che io sappia il tipo Integer tronca il valore decimale, non lo arrotonda (7/4 = 1), quindi dovrebbe essere lo stesso 2108, comunque sembra che in VB.NET si tenda ad arrotondarlo.

@ju89 metti questo codice all'inizio della sub
If value = "" Then
Return
End If


Comunque puoi isolare il codice in un Try-Catch per evitare altri tipi di errori (tipo se viene inserita una stringa)
Ultima modifica effettuata da R0gerBlack 13/04/14 9:12
aaa
12/04/14 22:23
Il tipo è un tipo e non esegue nulla.

E' l'operazione di conversione tra la stringa e l'integer (che passa da un reale) che esegue l'approssimazione. Succede anche in VB6 ...

Fra l'altro, personalmente non mi piace affatto una scrittura come

x = ....Text

perché una conversione esplicita evita problemi "nascosti".
14/04/14 12:46
ju89
ho inserito il codice :
        If value = "" Then
            Return
        End If


ma appena scrivo un numuero quando avvio il programma, va in errore ( InvalidCastException non è stata gestita).

Vi lascio il codice che ho inserito.

    Private Sub sanzione_TextChanged(sender As Object, e As EventArgs) Handles sanzione.TextChanged
        Dim value As Decimal = sanzione.Text
        If value = "" Then
            Return
        End If
        If value >= 211 And value <= 2108 Then
            Label5.Text = 12
        ElseIf value >= 2108.01 And value <= 5270 Then
            Label5.Text = 24
        ElseIf value >= 5270.01 And value <= 99999 Then
            Label5.Text = 60
        End If
    End Sub
:-|
aaa
14/04/14 16:27
Roby94
Allora, forse non ci siamo spiegati bene, il cast è la conversione di un tipo in un altro, tipi simili ma con rage diversi non hanno grandi problemi di cast, in quanto se il rage è adeguato questi possono convertirsi implicitamente, se invece i due tipo non hanno nulla a che fare tra loro, come il decimale e la stringa, serve una funzione che si occupi di questa conversione, in C# esiste il Parse devi trovare quale funzione permette questo cast esplicito in VB .NET
aaa
14/04/14 18:16
R0gerBlack
ju89 scusa non ho tenuto conto del fatto che in teoria un Decimal non potrebbe neanche avere il valore "", quindi dovresti scrivere all'inizio della procedura

If sanzione.Text = "" Then
Return
End If


L'idea di una conversione esplicita non è male, ma sinceramente in VB.NET che si tollera di tutto non mi sembra così necessaria per un programma amatoriale.
Ultima modifica effettuata da R0gerBlack 14/04/14 19:14
aaa
14/04/14 18:42
Se si vuole imparare a programmare, sin dai primi programmi, è necessario utilizzare le corrette metodologie.

14/04/14 18:51
ju89
@R0gerBlack anche aggiungendo la tua riga di codice, andava in errore.
Adesso il codice funzionante che ho messo è questo
    Private Sub sanzione_TextChanged(sender As Object, e As EventArgs) Handles sanzione.TextChanged
        If sanzione.Text = "" Then
            Return
        End If
        If sanzione.Text >= 211 And sanzione.Text <= 2108 Then
            Label5.Text = 12
        ElseIf sanzione.Text >= 2108.01 And sanzione.Text <= 5270 Then
            Label5.Text = 24
        ElseIf sanzione.Text >= 5270.01 And sanzione.Text <= 99999 Then
            Label5.Text = 60
        End If
    End Sub


e non da nessun errore.
Vi ringrazio per l'aiuto, sempre disponibili e gentili.:)
aaa