teclado numércio punto decimal

15/09/2005 - 06:08 por Juan Melas | Informe spam
Necesitaría que al ingresar el punto decimal en el teclado numérico lo
transforme a coma como la calculadora de windows cuando tengo configurado el
separador decimal como coma ya que a los usuarios les resulta más cómodo
cuando tienen que ingresar gran cantidad de datos numéricos.Hace poco
alguien paso un ejemplo pero no lo puedo encontrar.

Gracias
 

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
15/09/2005 - 16:20 | Informe spam
"Juan Melas" escribió en el mensaje
news:
Leonardo:ndl
Probé tu ejemplo, en este caso logro convertir el punto por
coma pero permite ingresar más de una coma, nose será posible hacer lo que
estoy intentando, ya que tengo una clase de textbox numérico que valida
diversas alternativas indendientemente de la configuración regional que
toma en la línea que transcribo abajo en este caso si pongo e.handled=true
no realiza la validación de algún modo deberé buscar la alternativa para
que detecte la configuración del separador decimal del equipo para
realizar la conversión del punto en coma y realizar la validación.



Hola, Juan:

Si te fijas en la conducta de Excel, en el momento en que incluyes un
segundo separador, el valor se convierte en alfanumerico.

La practica más frecuente funciona mas o menos así:

Cuando el control recibe el foco, el formato "externo" (#,###,##0.00, por
ejemplo) se convierte en un formato "simplificado" (#######0,00) [Text =
Str(Double.Parse(Text))]

Durante la edición, los únicos caracteres validos son el signo (solo en la
primera posicion), el separador decimal (que puede ser el punto, es un
separador universal al cual todos los usuarios están acostumbrados: de hecho
me molesta que Excel utilice la coma) y por supuesto los dígitos.

Puedes verificar que el punto sea único escribiendo (siempre en KeyPress):

If e.KeyChar = "." Then
If DirectCast(sender, TextBox).Text.IndexOf(".") >= 0 Then
' ya hay un punto
e.Handled = True
...

Una vez que tienes una cadena de numeros, opcionalmente precedida de un
signo y conteniendo un solo punto (.), puedes, en el evento Validating, o en
Leave, convertir la cadena a un número(mediante Val, que asume siempre el
formato interno, independiente de la configuracion regional -no se si hay un
metodo equivalente en C#), hacer lo que necesites con él, y darle el formato
requerido con Double.ToString(formato).

Casi todos los usuarios estamos acostumbrados a aceptar el punto como
separador decimal durante la edición de números.

Salud!

Preguntas similares