Validación de Números Decimales

Código en visual basic .net

 

Fecha: 03/09/2005 (31/08/2005)
Autor: Evelyn Buitron Guardamino (eveyaquy6@gmail.com)

 


Introducción

El siguiente código lo que realiza es la validación de números decimales de dos dígitos despues del punto decimal en una caja de texto, esta hecho en Visual Basic .Net pero lo puedes migrar a diferentes lenguajes ya que la logica seria la misma.

Para la explicacion del codigo usaremos un formulario con una caja de texto y una clase.

Dim clase As New Cls_ey
Private SubTextBox1_KeyPress(ByVal sender As System.Object, ByVal e As  System.Windows.Forms.KeyPressEventArgs) Handles TxtNumero.KeyPress
        clase.NumeroDec(e, Me.TxtNumero)
End Sub

Creamos una Clase, en nuestra aplicacion se usa la clase Cls_ey

Public Class Cls_ey
    Function  NumeroDec(ByVal e As  System.Windows.Forms.KeyPressEventArgs, ByVal Text As TextBox) As Integer

        Dim dig As Integer = Len(Text.Text & e.KeyChar)
        Dim a, esDecimal, NumDecimales As Integer
        Dim esDec As Boolean
         ' se verifica si es un digito o un punto 
        If e.KeyChar.IsDigit(e.KeyChar) Or e.KeyChar = "." Then
            e.Handled =  False
        ElseIf e.KeyChar.IsControl(e.KeyChar) Then
            e.Handled = False
            Return a
        Else
            e.Handled = True
        End If
        ' se verifica que el primer digito ingresado no sea un punto al seleccionar
        If Text.SelectedText <> "" Then
            If e.KeyChar = "." Then
                e.Handled = True
                Return a
            End If
        End If
	If dig = 1  And e.KeyChar = "."  Then
            e.Handled =  True
             Return a
        End If
        'aqui se hace la verificacion cuando es seleccionado el valor del texto
	'y no sea considerado como la adicion de un digito mas al valor ya contenido en el textbox
        If Text.SelectedText = "" Then
             ' aqui se hace el for para controlar que el numero sea de dos digitos - contadose a partir del punto decimal.
             For a = 0 To dig - 1
                Dim car As String = CStr(Text.Text & e.KeyChar)
                If car.Substring(a, 1) = "." Then
                    esDecimal = esDecimal + 1
                    esDec = True
                End If
                If esDec = True Then
                    NumDecimales = NumDecimales + 1
                End If
                ' aqui se controla los digitos a partir del punto numdecimales = 4 si es de dos decimales 
		If NumDecimales >= 4 Or esDecimal >= 2 Then
                    e.Handled = True
                End If
            Next
        End If
    End Function
End Class

 

Espero les sea util en sus validaciones, si lo mejoran no olviden pasarme el dato. El codigo Completo esta adjunto en el link superior

EveYaquy°

Huacho - Perú

 


Espacios de nombres usados en el código de este artículo:

System.Windows.Forms.Form

 


Fichero con el código de ejemplo: eveyaquy_decimal_vb.zip - Tamaño 23.0 KB


ir al índice