Visual Basic - Formato Numero en TextBox

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Formato Numero en TextBox

Publicado por Ismael (7 intervenciones) el 23/03/2017 23:54:59
Hola,

Tengo un problema que hace días no logro resolver y acudo a la comunidad.

Es sabido que para darle formato número a un TextBox puedo usar, por ejemplo, en evento Lost_Focus o Leave:

TextBox1.Text=FormatNumber(Val(TextBox1.text), 1)

o

TextBox1.Text=Format(Val(TextBox1.Text), "#,##0.0")

Hasta ahí bárbaro, al salir del textbox me coloca el formato número correctamente... PERO

Si vuelvo a entrar (o hacer nuevamente foco) en el TextBox y SIN HACER NADA, ni tocar el teclado, y salgo, el decimal lo redondea a 0..

Por Ejemplo:

Pongo en TextBox1.Text creado en el formulario 2,3, salgo y efectivamente queda 2,3.... pero si vuelvo a entrar al TextBox y salir, me lo convierte en 2,0 ! esto pasa con todos los decimales distintos de 0...

Es jodidamente increíble, algo tan sencillo... en los foros no encuentro nada al respecto... Se puede probar simplemente creando un windows form y creando el textbox...

Alguien sabe porque pasa esto?

Desde ya muy agradecido !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Formato Numero en TextBox

Publicado por Andres Leonardo (1798 intervenciones) el 24/03/2017 16:06:17
q version de visual estas usando?

intenta asi

TextBox1.Text=Format(Val(TextBox1.Text), "#,###.##")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rafa

Formato Numero en TextBox

Publicado por Rafa (1 intervención) el 28/06/2020 09:20:16
Lo probe y a mi me funcio genial muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formato Numero en TextBox

Publicado por daniel (3 intervenciones) el 25/03/2017 18:56:41
Bien, quieres que el textbox tenga formato no?

Lo que yo hice, fue darle propiedad al textbox, cosa que solo me admita números... Al hacer esto, te aceptará cualquier formato, pues respetará la escritura del mismo, ya que formato hace parte de dígitos.

Así se le da validar números al textbox :

1
2
3
4
5
6
7
8
If Char.IsDigit(e.KeyChar) Then
   e.Handled = False
ElseIf Char.IsControl(e.KeyChar) Then
   e.Handled = False
Else
   e.Handled = True
MessageBox.Show("Solo numeros", "validacion numero", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If

Después de esto, añade tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Formato Numero en TextBox

Publicado por Ismael (7 intervenciones) el 25/03/2017 19:04:00
Si, ya resolví el problema !

Era la configuración regional del sistema, le agregué:

1
2
Imports System.Globalization
Imports System.Threading

y en la carga del formulario:

1
2
3
4
5
6
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("es-AR")
System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yy"
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator = "."
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyGroupSeparator = ","
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = ","

Para evitar que el usuario agregue la coma (","), o sea, que pueda colocar sólo números y el punto decimal (para el caso que el número sea decimal):

En el evento keyPress de cada textBox:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
If InStr(1, "0123456789.-" & Chr(8), e.KeyChar) = 0 Then
    e.KeyChar = CChar("")
ElseIf e.KeyChar = "." Then
    If TB.Text = "" Then
        e.KeyChar = CChar("")
    Else
        If InStr(TB.Text, ".") <> 0 Then
            e.KeyChar = CChar("")
        End If
 
    End If
ElseIf e.KeyChar = "-" Then
    If TB.Text <> "" Then
        e.KeyChar = CChar("")
    Else
        If InStr(TB.Text, "-") <> 0 Then
            e.KeyChar = CChar("")
        End If
    End If
End If


Y PROBLEMA RESUELTO !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 119
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Formato Numero en TextBox

Publicado por Christian (713 intervenciones) el 26/03/2017 04:50:16
Ambos códigos medios rebuscados, tanto en vb 6 como en vb.net pueden usar la función isnumeric y listo.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Formato Numero en TextBox

Publicado por lixander (3 intervenciones) el 26/03/2017 05:11:19
1
2
3
4
Private Sub Text3_KeyPress(KeyAscii As Integer)
If (KeyAscii >= 97) And (KeyAscii <= 122) Then
KeyAscii = 8
End If
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 119
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Formato Numero en TextBox

Publicado por Christian (713 intervenciones) el 26/03/2017 04:56:05
La función formatnumber redondea siempre si mal no recuerdo. No recuerdo si tiene un parámetro donde específica eso.
Usa una variable que acepte decimales y usa el mask edit control.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Formato Numero en TextBox

Publicado por Andres Leonardo (1798 intervenciones) el 13/09/2019 19:56:58
puede ser por tu configuracion regional , coloca

1
TextBox1.Text=Format(Val(TextBox1.Text), "#.###,##")

o verifica y colocale el valor absoluto del texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar