Limitar enteros y decimales en textbox vb.net

Que tal experto tengo una duda, he sabido limitar un textbox para que escriba o solo puros enteros o caracteres... Así como también limitarlo para cierta cantidad el problema es que quisiera que limitara que me escribiera hablando ya específicamente en puros enteros (3 enteros y 2 decimales) obvio con un solo punto que seria el delimitador para que después de eso solo 2 enteros... Tengo un código que puedo limitar la cantidad de decimales... Y también en cuanto se ponga punto que solo permita cierta cantidad... Dejame te lo pongo para si pudieras ayudarme a acomodar solo para los enteros eso no lo logre :( mira es el siguiente en un textbox en el evento keypress:
TextBox17.MaxLength = 6
' Referenciamos el control TextBox que ha desencadeno el evento
'
Dim tb As TextBox = DirectCast(sender, TextBox)
' Carácter separador decimal existente actualmente
' en la configuración regional de windows.
'
Dim separadorDecimal As String = _
Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator
If ((e.KeyChar = "."c) OrElse (e.KeyChar = ","c)) Then
' Si en el control hay ya escrito un separador decimal,
' deshechamos insertar otro separador más.
'
If (tb.Text.IndexOf(separadorDecimal) >= 0) And Not (tb.SelectionLength <> 0) Then
e.Handled = True
Return
Else
If ((tb.TextLength = 0) OrElse (tb.SelectionLength > 0) OrElse _
((tb.TextLength = 1) And (tb.Text.Chars(0) = "-"c))) Then
' Si no hay ningún número, insertamos un cero
' antes del separador decimal.
tb.SelectedText = "0"
End If
' Insertamos el separador decimal.
'
e.KeyChar = CChar(separadorDecimal)
Return
End If
End If
If (Convert.ToInt32(e.KeyChar) = 8) Then
' Se ha pulsado la tecla retroceso
Return
ElseIf (Not (Char.IsDigit(e.KeyChar))) Then
' No se ha pulsado un dígito.
e.Handled = True
Return
End If
' Si existe el separador decimal, no permitimos que
' se escriban más de tres números decimales.
'
Dim index As Integer = tb.Text.IndexOf(separadorDecimal)
If (index >= 0) Then
Dim decimales As String = tb.Text.Substring(index + 1)
e.Handled = (decimales.Length = 3)
End If
' Si el texto del control actualmente está seleccionado,
' Permitimos que se pueda reemplazar por el carácter tecleado.
'
If (tb.SelectionLength > 0) Then e.Handled = False

2 respuestas

Respuesta
2
Bn.. lo k kieres es k kuando tengas un numero.. por ejemplo pi=3.1415.. al insertarlo solo muestre 3.14.. si esto es lo kieres despues de k la persona escriba el numero usa esto..
textbox1.Text = Format(CSng(textbox1.Text), "###.##")
Tambn puede ser k kieras k sean exactamente 3 enteros y dos partes decimales.. para esto seria k le insertaras el punto cuando se hayan insertado 3 caracteres y k el foco permanexca en el ultimo lugar y listo..
Comentame si necesitas algo más..
¿Disculpa me interesa más que sea lo ultimo que dijiste de que se insertara el punto en cuanto escriba 3 caracteres por favor eso es lo que quisiera hacer pero como lo harías tu? ¿Es qué no tengo idea de como en el textbox al escribirse los 3 caracteres inserte el punto automáticamente y por lo tanto lo que faltaría como seria por favor?
Bn... pues has un contador en el key press de tal manera que cuando tengas 3 insertes el punto.. puedes hacerlo de esta manera
Afuera declaras el contador
dim con as integer=0
'en el keypress escribes esto..
con=con+1
if(con=3)then
me.textbox1.text+="."
esta es una manera... tambn puedes hacerlo asi sin contador..
'en el keypress
if(me.textbox.textlength=3)then
me.texbox1.text+="."
De esta manera ingresara el punto..
Espero te sirva .. cualquier cosa comenta..
Amigo disculpame de nuevo si comenzó a funcionar lo que me dices solo que hice un pequeño problema que me quede con duda...
En cuanto escribo por ejemplo 123 en ese momento agrega el punto pero sigo escribiendo números y el foco del textbox me lo posiciona al empiezo del textbox no continuando escribiendo adelante del punto si pongo 123 y después del punto quiero 89 me queda así:
89123.
¿Alguna sugerencia amigo?
jejjee.. ups! Se me paso esop :P .. bn esa parte es complicada pero tengo la siguente solucion.. lo uniko malo es k si escribe el numero mal este se borrara completamente alpicala y me dices k tal te fue..
Esto va en el evento keypress del textbox
Me.TextBox1.MaxLength = 6
TextBox1.SelectionStart() = Me.TextBox1.TextLength
If (TextBox1.TextLength = 3) Then
Me.TextBox1.Text += "."
TextBox1.SelectionStart() = Me.TextBox1.TextLength
End If
If (Asc(e.KeyChar) = 8) Then
Me.TextBox1.Text = ""
End I
No se te olvidefinalizar la pregunta si resulta ser lo que quieres..
Excelentemente grande! A favoritos jajajaj :P te lo agradezco infinitamente es justo lo que necesitaba para fomentar más mis textbox te lo agradezco ya vi en que fallaba! GRACIAS EXPERTO andy645jh!
Respuesta
Si verificas el numero de enteros, buscando el separador decimal, luego que obtienes esa intentar sabes cuantos enteros hay y allí validas el numero de enteros, o a medida que se van incrementando los caracteres en el textbox validas que nos ean mayor al uemro de enteros.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas