Foros del Web » Programación para mayores de 30 ;) » .NET »

TextBox sólo números?

Estas en el tema de TextBox sólo números? en el foro de .NET en Foros del Web. Hola grupo: Necesito saber cómo hacer que un textbox (txtDocenas) reciba números con decimales (99,99) para realizar un cálculo. Necesito multiplicar txtDocenas con txt2. Hasta ...
  #1 (permalink)  
Antiguo 31/10/2005, 06:53
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
Pregunta TextBox sólo números?

Hola grupo:

Necesito saber cómo hacer que un textbox (txtDocenas) reciba números con decimales (99,99) para realizar un cálculo. Necesito multiplicar txtDocenas con txt2.

Hasta ahora tengo el siguiente código para admitir sólo números:

Private Sub txtDocenas_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

If e.KeyChar.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If

End Sub

funciona pero ¿cómo lo hago con las comas (decimales)?

Cuando trabajo con string: transformo el contenido de la caja a números;
val(txtDocenas.text) luego, multiplico y sólo toma la parte entera antes de la coma ¿Por qué?

Graciasss
  #2 (permalink)  
Antiguo 31/10/2005, 07:20
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 6 meses
Puntos: 156
a ver si te sirve este código:

http://www.elguille.info/colabora/NE...ergio_3087.htm

saludos!
  #3 (permalink)  
Antiguo 02/11/2005, 10:09
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
agradecido de tu ayuda freegirl pero he creado la siguiente rutina y me funca!!

Private Sub txtDocenas_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDocenas.KeyPress

If e.KeyChar.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar = "," And Not txtDocenas.Text.IndexOf(",") Then
e.Handled = True
ElseIf e.KeyChar = "," Then
e.Handled = False
Else
e.Handled = True
End If

End Sub

Con esto consigo solo ingresar números y una sola ",".

Para la operación matematica hago lo siguiente:

txtDocenas.Text = txtDocenas.Text.Replace(",", ".")
reemplazo la coma por un punto y realizo la operación, luego vuelvo la coma por el punto.

¿Será por la configuración regional?

Espero les sirva ....
  #4 (permalink)  
Antiguo 03/11/2005, 15:12
Avatar de gualicho  
Fecha de Ingreso: enero-2005
Ubicación: Capital Federal - Argentina
Mensajes: 55
Antigüedad: 19 años, 3 meses
Puntos: 0
No es más fácil usar un NumericUpDown en vez de un text box?
__________________

ASUS A7N8X-E Deluxe
AMD Semprom 2200 + (1.5 ghz) FSB 333
2 x 512 mb Kingston ddr 400 en dual channel
ATI Radeon 9250 (128 mb / 64 bits)
HD SAMSUNG SATA 120 gb
HD HITACHI IDE 80 gb

SO: Win XP, Debian Sarge
  #5 (permalink)  
Antiguo 04/11/2005, 07:37
Avatar de Maxi.Net  
Fecha de Ingreso: abril-2005
Ubicación: R.M. Talagante, Chile!!
Mensajes: 295
Antigüedad: 19 años
Puntos: 2
es bastante bueno ya que valida sólo números pero permite mas de una coma.
puede ser más fácil pero, pierdo tiempo esperando que cliquee para aumentar y decrementar los números, NO encontre alguna propiedad para controlar la cantidad de comas que se pueden ingresar y lo otro los valores no son predeterminados y sólo los conoce el user.

Adiosss

Nota: Fue una revision rápida que le di al control.
  #6 (permalink)  
Antiguo 04/11/2005, 12:56
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Cada control está hecho para cumplir una función determinada.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:44.