Números decimales en un textbox sin permitir repetir punto decim al

01/04/2005 - 09:01 por rbal | Informe spam
Hola, estoy tratando de crear un textbox (como componente) para solamente
permitir ingreso de números, incluyendo el punto decimal. El problema resulta
que si por error alguien pone dos puntos decimales, el sistema se cae al
entrar en error. estoy viendo la forma de que solamente permita poner el
punto decimal una sola vez en el textbox

Preguntas similare

Leer las respuestas

#1 Jorge Serrano [MVP VB]
01/04/2005 - 15:17 | Informe spam
Hola rbal,

espero que la siguiente porción de código te ayude:

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As
KeyPressEventArgs) Handles TextBox1.KeyPress
Dim cadena As String = TextBox1.Text
Dim Ocurrencias As Byte = 0
Dim str As String() = cadena.Split(".")
For I As Integer = 0 To str.Length - 1
Ocurrencias = Ocurrencias + 1
Next
Ocurrencias = Ocurrencias - 1
If (Char.IsDigit(e.KeyChar) = False And e.KeyChar <> ("."c)) Or
(e.KeyChar = ("."c) And Ocurrencias <> 0) Then
e.Handled = True
End If
End Sub


Otra posibilidad es utilizar expresiones regulares.
Por otro lado, aunque el uso del símbolo decimal aquí es el . yo intentaría
generalizarlo con el uso del símbolo decimal indicado en la configuración
regional del pc que puede ser obtenido con el nombre de espacio Culture.
Te invito por lo tanto, a que veas el siguiente artículo que te ayudará
igualmente:
http://www.microsoft.com/spanish/ms...art116.asp

Un saludo,

Jorge Serrano Pérez
MVP VB.NET


"rbal" wrote:

Hola, estoy tratando de crear un textbox (como componente) para solamente
permitir ingreso de números, incluyendo el punto decimal. El problema resulta
que si por error alguien pone dos puntos decimales, el sistema se cae al
entrar en error. estoy viendo la forma de que solamente permita poner el
punto decimal una sola vez en el textbox
Respuesta Responder a este mensaje
#2 Carlos Durán Urenda
01/04/2005 - 18:45 | Informe spam
compurueba la existencia del decimal con InStr, si te devuelve un valor
mayor a cero, no admitas el decimal


"rbal" escribió en el mensaje
news:
Hola, estoy tratando de crear un textbox (como componente) para solamente
permitir ingreso de números, incluyendo el punto decimal. El problema
resulta
que si por error alguien pone dos puntos decimales, el sistema se cae al
entrar en error. estoy viendo la forma de que solamente permita poner el
punto decimal una sola vez en el textbox
Respuesta Responder a este mensaje
#3 Victor
01/04/2005 - 21:06 | Informe spam
Que no es más fácil comprobando que el valor introducido se un número?

If Not IsNumeric(txtBox.Text) Then
...
...
End If


"rbal" escribió en el mensaje
news:
Hola, estoy tratando de crear un textbox (como componente) para solamente
permitir ingreso de números, incluyendo el punto decimal. El problema
resulta
que si por error alguien pone dos puntos decimales, el sistema se cae al
entrar en error. estoy viendo la forma de que solamente permita poner el
punto decimal una sola vez en el textbox
Respuesta Responder a este mensaje
#4 rbal
02/04/2005 - 00:43 | Informe spam
Funcioné muy bien, incluso le agregué el backspace y el signo " -" con sus
asciiInteger 8 y 45
Gracias.

"Jorge Serrano [MVP VB]" escribió:

Hola rbal,

espero que la siguiente porción de código te ayude:

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As
KeyPressEventArgs) Handles TextBox1.KeyPress
Dim cadena As String = TextBox1.Text
Dim Ocurrencias As Byte = 0
Dim str As String() = cadena.Split(".")
For I As Integer = 0 To str.Length - 1
Ocurrencias = Ocurrencias + 1
Next
Ocurrencias = Ocurrencias - 1
If (Char.IsDigit(e.KeyChar) = False And e.KeyChar <> ("."c)) Or
(e.KeyChar = ("."c) And Ocurrencias <> 0) Then
e.Handled = True
End If
End Sub


Otra posibilidad es utilizar expresiones regulares.
Por otro lado, aunque el uso del símbolo decimal aquí es el . yo intentaría
generalizarlo con el uso del símbolo decimal indicado en la configuración
regional del pc que puede ser obtenido con el nombre de espacio Culture.
Te invito por lo tanto, a que veas el siguiente artículo que te ayudará
igualmente:
http://www.microsoft.com/spanish/ms...art116.asp

Un saludo,

Jorge Serrano Pérez
MVP VB.NET


"rbal" wrote:

> Hola, estoy tratando de crear un textbox (como componente) para solamente
> permitir ingreso de números, incluyendo el punto decimal. El problema resulta
> que si por error alguien pone dos puntos decimales, el sistema se cae al
> entrar en error. estoy viendo la forma de que solamente permita poner el
> punto decimal una sola vez en el textbox
Respuesta Responder a este mensaje
#5 rbal
02/04/2005 - 00:45 | Informe spam
Carlos puedes explicarme un poco más, estoy en mis primeras lecciones de VB
gracias

"Carlos Durán Urenda" escribió:

compurueba la existencia del decimal con InStr, si te devuelve un valor
mayor a cero, no admitas el decimal


"rbal" escribió en el mensaje
news:
> Hola, estoy tratando de crear un textbox (como componente) para solamente
> permitir ingreso de números, incluyendo el punto decimal. El problema
> resulta
> que si por error alguien pone dos puntos decimales, el sistema se cae al
> entrar en error. estoy viendo la forma de que solamente permita poner el
> punto decimal una sola vez en el textbox



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida