Newsgroup: it.comp.lang.visual-basic
Titolo: Inserire solo numeri nella TextBox

VB.net 2010
Ho una TextBox dentro cui l'utente deve inserire un numero decimale 
(associato a una variabile tipo Double).
Il separatore decimale  di default, è la virgola e io volevo anche il punto. 
Come posso risolvere questo problema?
Oppure aprire un messaggio se si usa la punteggiatura sbagliata.
Ciao
nero2 

 Come posso risolvere questo problema?
Quale problema?
Alberto

> Quale problema?
volevo che la TextBox accettasse sia il punto che la virgola come separatore 
decimale. 


Ogni programma che si rispetti deve, come prima cosa (ovviamente se sono 
rilevanti all'interno dello stesso) leggere le impostazioni 
internazionali, quindi determinare se il separatore è la virgola o il punto.
Se poi vuoi che sia digitando il punto che digitando la virgola venga 
sempre interpretato come separatore decimale, dovrai intercettare la 
modifica come evento keypres della texbox e modificare il 
carattere(virgola e punto) nel valore del separatore correntemente 
impostato nel sistema.
-- 
Daniele Pinna  (leva oops. per rispondere)
Utente Skype: dapinna
Sito Web: 
http://www.dapinna.com
Il Docfa in Pillole:  
http://www.ildocfainpillole.it
DAPINNA.COM
 su Facebook: 
www.facebook.com/pages/Sassari-Italy/DAPINNACOM/110085322371199
-----
Now Powered by Linux KUbuntu 10.10 "Maverick Meerkat"

 decimale.
Una textbox accetta stringhe, puoi scriverci anche "ciao mamma", mica 
ti impedisce di metterci un punto o una virgola.
E' nel passaggio da variabile numerica a stringa (quando 'riempi' la 
textbox da codice) e nel passaggio da stringa a numerico (quando riempi 
la variabile), che scegli il metodo di conversione.
E in questo metodo di conversione, fai quello che vuoi, e decidi se 
esigi il rispetto delle impostazioni locali dell'utente, se esigi il 
rispetto di uno standard a-locale, o se consenti sia le impostazioni 
locali che uno standard a-locale.
Se il problema è nel binding, allora passo, non uso quella roba lì.
Alberto

 ti impedisce di metterci un punto o una virgola.
[snip]
Altrimenti se doveva chiama' NumBox ;D
-- 
-> GbC|
www.gbcdepot.com
www.chiappori.com
 

 impedisce di metterci un punto o una virgola.
Op ha detto che può inserire solo numeri...
Presumo che abbia già impostato il keypress in modo da filtrare solo 
numeri... e se non l'ha fatto dovrebbe farlo per non avere problemi.
-- 
Daniele Pinna
DAPINNA.COM
(leva oops per rispondere)
-----
Utente Skype: dapinna
DAPINNA.COM
        :  
http://www.dapinna.com
Il Docfa in Pillole:  
http://www.ildocfainpillole.it
 - Sito Aggiornato!!!
DAPINNA.COM
 su Facebook: 
www.facebook.com/pages/Sassari-Italy/DAPINNACOM/110085322371199


Ho risolto in questo modo. Accetta solo numeri e la virgola (non potendo 
inserire il punto, il programma non solleva alcun errore ).
Grazie
nero23
Private Sub TextBox5_KeyPress(ByVal sender As Object, ByVal e As 
System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress
       If (e.KeyChar > Chr(47) And e.KeyChar < Chr(58)) Or e.KeyChar = 
Chr(8) Or e.KeyChar = Chr(44) Then
            e.Handled = False
        Else
            e.Handled = True
        End If
    End Sub

 inserire il punto, il programma non solleva alcun errore ).
... finchè l'utente non fa 'Incolla' e ti frega! Fai sempre una validazione a posteriori, non affidarti solo a queste restrizioni che metti nei controlli.
Ad ogni modo, puoi risparmiare di riscrivere quel codice in giro per le form creando un piccolo controllo personalizzato, con il tuo stesso codice (a parte le vecchie funzioni di VB6, tolte)
Public Class NumericTextBox
    Inherits System.Windows.Forms.TextBox
    Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
        Dim charValue As Int32 = Convert.ToInt32(e.KeyChar)
        If Char.IsDigit(e.KeyChar) OrElse charValue = 44 OrElse charValue = 8 Then
            MyBase.OnKeyPress(e)
        Else
            e.Handled = True
        End If
    End Sub
End Class

Ok, seguirņ il tuo consiglio
Grazie