Limitar a escribir 4 dígitos después de punto decí

Espero puedan ayudarme con esto, tengo un formulario con textbox en los que el usuario escribe cantidades con punto decimal, lo que quiero hacer es que solo se permita escribir cuatro dígitos numéricos después del punto decimal, es decir identificar el punto decimal y solo dejar espacio para que el usuario escriba 4 números más, la verdad soy nueva en esto y no tengo mucho idea de como podría hacerlo, agradecería mucho la ayuda, y si pueden ayudarme con c# seria muchísimo mejor.

1 respuesta

Respuesta
1
Estuve investigando este caso y encontré lo siguiente debe utilizar el control Microsoft Maskededit.
Abra un proyecto nuevo y coloque el control Maskededit, luego hacer click en personalizado y colocar lo siguiente :
Mask = ###############.####                  Maxlength = 20
Format = ##############0.0000                 PromptChar = " "   (espacio)
He colocado también un Textbox para mover el resultado editado.
Este es el código para probarlo :
Dim Enteros As Byte
Dim Punto As Byte
Dim Posicion As Byte
Dim Texto As String
Sub Masked_Key_Press(MskEdit As MaskEdBox, keyascii As Integer)
    ' Calculamos la ubicación del punto decimal
    Punto = InStr(MskEdit.Mask, ".")
    Enteros = Punto - 1
    ' Chequeamos cuando opriman el punto
    If keyascii = 46 And MskEdit.SelStart < Punto Then
         Posicion = MskEdit.SelStart + 1       ' Guardamos la posición
         MskEdit.SelStart = 0
         MskEdit.SelLength = Posicion          ' Highlight up to the current
         Texto = MskEdit.SelText               ' Salvamos lo insertado
         MskEdit.SelLength = Enteros
         MskEdit.SelText = ""                  ' Limpiamos la parte entera
         MskEdit.SelStart = Punto - Posicion
         MskEdit.SelLength = Posicion          ' Reposition caret
         MskEdit.SelText = Texto               ' Pegamos lo salvado
         MskEdit.SelStart = Punto              ' Vamos a la posicion del punto decimal
      End If
End Sub
Private Sub MaskEdBox1_GotFocus()
    MaskEdBox1.SelStart = 0
    MaskEdBox1.SelLength = Len(MaskEdBox1)
End Sub
Private Sub MaskEdBox1_KeyPress(keyascii As Integer)
     Call Masked_Key_Press(MaskEdBox1, keyascii)
     If keyascii = 13 Then SendKeys "{tab}"
End Sub
Private Sub MaskEdBox1_LostFocus()
    Text1 = Format(MaskEdBox1, "####,###,##0.0000")
End Sub
Suerte !
El inconveniente es que si necesita manejar números negativos, este control no permite signo.
Será posible cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas