numerico con 2 decimales

22/03/2006 - 02:53 por Jose | Informe spam
Como hacer un texbox numerico con 2 decimales y que al pulsar el . decimal
el cursor se vaya a los decimales. LA idea tambien es que el texbox tambien
muestre una mascara por ejemplo 999,999.99

Gracias de antemano,
 

Leer las respuestas

#1 Luis Miguel Blanco
22/03/2006 - 21:58 | Informe spam
Hola Jose

Puedes utilizar el control MaskedTextBox, con lo que la parte de
implementación de máscaras de entrada y formateo de valores ya la tienes
resuelta, y añadirle un pequeño truco que detecte cuándo has pulsado el
caracter de punto decimal, en ese momento, tomas el número que haya
introducido el usuario y lo ajustas al contenido de la caja de texto del
control, de forma que quede "pegado" al punto decimal.

Además puedes utilizar la clase SendKeys para situar el cursor del teclado
en la primera posición de dígito decimal.

Pongamos como ejemplo, que añadimos al formulario un control MaskedTextBox,
y en la propiedad Mask asignamos el valor "9999,99".

A continuación escribimos código para el evento KeyPress de este control, en
el que comprobemos que si el usuario ha pulsado el punto decimal, realicemos
un ajuste del número introducido en el control, y situemos el cursor de
entrada en la parte decimal.

'////////////////////////////////////////
Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress
Dim numero As String = String.Empty

If e.KeyChar = "."c Then
Me.MaskedTextBox1.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
numero = Me.MaskedTextBox1.Text

Me.MaskedTextBox1.Text = New String(" "c,
Me.MaskedTextBox1.Mask.Length - (numero.Length + 3)) & _
numero & New String(" "c, 2)

SendKeys.Send("{END}")
SendKeys.Send("{LEFT}")
SendKeys.Send("{LEFT}")
End If
End Sub
'////////////////////////////////////////

Una vez que hayas añadido este código puedes realizar la siguiente prueba:
ejecuta el formulario y te situas en el control, en la primera posición a la
izquierda. Escribe un número de un par de dígitos y pulsa el punto, con lo
que esos dígitos deberían ajustarse a la derecha al lado del punto decimal,
algo parecido a lo siguiente:

Antes de pulsar punto: "54__.__"

Después de pulsar punto: "__54.__"

Espero que con algún ajuste adicional, lo puedas adaptar a tu caso.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jose" wrote:

Como hacer un texbox numerico con 2 decimales y que al pulsar el . decimal
el cursor se vaya a los decimales. LA idea tambien es que el texbox tambien
muestre una mascara por ejemplo 999,999.99

Gracias de antemano,



Preguntas similares