jueves, 1 de septiembre de 2011

Validando controles en VB.NET



Recientemente tuve la necesidad de validar los datos de un formulario en VB.NET, si bien ya existen componentes propietarios que lo hacen automaticamente, en ocasiones tenemos la necesidad o la unica alternativa de utilizar los que Visual Studio trae incorporados, en este caso y para hacerlo de una forma mas sencilla lo haremos con un ciclo For Each.

Lo primero que debemos de hacer es especificar que componentes del formulario vamos a validar, para hacerlo, lo seleccionamos y establecemos su propiedad Tag = 1, de la siguiente manera:

TextBox1.Tag = 1


Lo segundo es establecer una etiqueta para saber a que componente nos referimos al validarlo, para esto podemos usar la propiedad AccessibleName, de la siguiente manera:

TextBox1.AccessibleName = “Pozo” ‘En este caso el componente guardara el nombre de un pozo


Y por ultimo, les dejo la funcion de validación:

Private Function ValidaDatos() As Boolean

Dim Ctl As Control
Dim x As Integer

For x = Me.Controls.Count – 1 To 0 Step -1

Ctl = Me.Controls.Item(x)

If TypeOf (Ctl) Is TextBox Then
Dim Control As TextBox = Ctl
If Control.Tag = 1 Then

If Control.Text.Trim = “” Then
MsgBox(“Debe de establecer el valor de: ” & Control.AccessibleName)
Control.BackColor = Color.Yellow
Control.Focus()
ValidaDatos = False
Exit Function
Else
Control.BackColor = Color.White
End If

End If
End If

If TypeOf (Ctl) Is ComboBox Then
Dim Control As ComboBox = Ctl
If Control.Tag = 1 Then

If Control.Text.Trim = “” Then
MsgBox(“Debe de establecer el valor de: ” & Control.AccessibleName)
Control.BackColor = Color.Yellow
Control.Focus()
ValidaDatos = False
Exit Function
Else
Control.BackColor = Color.White
End If

End If
End If

Next

ValidaDatos = True

End Function


Como pueden ver en la funcion recorremos los componentes del formulario de manera inversa, esto lo hice porque de alguna manera el orden de los componentes queda en orden inverso al realizado al momento de su creación, tambien vemos que primero validamos el tipo de componente (TextBox y ComboBox) y despues si es necesaria su validación, en este caso la unica validación es que el componente no este vacio, si lo esta le ponemos el fondo amarillo, caso contrario le ponemos el fondo blanco (Determinado).

Si bien el ejemplo es sencillo, con algunas modificaciones podemos validar varios escenarios, solo es cuestion de hechar a volar la imaginación.

Nota: El ejemplo esta hecho en Visual Studio 2008 con framework 3.5

No hay comentarios: