Hola a todos.

Pues continuando con la secci贸n de Visual Basic .Net...

驴Qui茅n no se ha metido con el problema de que ya tienes terminado algun programa con introducci贸n de datos pero solo falta validar la introducci贸n de datos mediante cuadros de texto? y muchas veces te gustar铆a que existiera algo f谩cil y rapido que valide lo que tu quieres...

Pues como ya es com煤n, Visual Basic cuenta obviamente con un sistema de cachado de cada caracter tecleado en un cuadro de texto, el cual es obtenido antes de que el caracter sea pintado en pantalla; de esta manera tu puedes cachar el caracter cuando es presionado, verificar si ese caracter que se esta intentando introducir es valido para tus prop贸sitos (por ejemplo si deseas que solo se introduzcan n煤meros, o tal vez solo vocales) y si cumple con tus expectativas, entonces lo dejas pasar; sino entonces "bloqueas" la impresi贸n del caracter provocando la validaci贸n correcta de un campo de texto :)

Aqu铆 te dejo un ejemplo muy sencillo pero f谩cilmente comprender谩s como funciona...
El programa se ve as铆:

y el c贸digo es este:

VB.NET:
  1. Public Class Form1
  2.     Function buscar(ByVal txtval As String, ByVal car As Char) As Boolean
  3.         Dim b As Integer
  4.         For b = 1 To txtval.Length
  5.             If Convert.ToChar(Mid(txtval, b, 1)) = car Then
  6.                 Return False
  7.             End If
  8.         Next
  9.         Return True
  10.     End Function
  11.  
  12.     Private Sub txt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt.KeyPress
  13.         Dim x As Char = e.KeyChar
  14.  
  15.         If x>= "0" And x <= "9" Then 'numero
  16.             e.Handled = False
  17.         Else
  18.             If x = Convert.ToChar(13) Then 'enter
  19.                 e.Handled = True
  20.             Else
  21.                 If x = Convert.ToChar(8) Then 'backspace
  22.                     e.Handled = False
  23.                 Else
  24.                     If buscar(txt.Text, x) = True And x = "." Then 'punto
  25.                         e.Handled = False
  26.                     Else
  27.                         If txt.Text.Length = 0 And (x = "+" Or x = "-") Then 'suma o resta
  28.                             e.Handled = False
  29.                         Else
  30.                             e.Handled = True
  31.                         End If
  32.                     End If
  33.                 End If
  34.             End If
  35.         End If
  36.  
  37.     End Sub
  38. End Class

Explicaci贸n
Lo que tenemos aqu铆 son dos funciones: 1 llamada buscar() que lo 煤nico que hace es recorrer una cadena string en busca de un caracter en especifico el cual es pasado como par谩metro junto con la cadena.

La segunda funci贸n se ejecuta en el evento KeyPress del cuadro de texto, y lo que hace es cachar el caracter precionado; aqu铆 vemos como se cacha el caracter:

VB.NET:
  1. Dim x As Char = e.KeyChar

y despu茅s validamos a nuestro gusto... Yo en este caso lo que quiero que se introduzca es solo numeros con signo "+" o "-" y un solo punto "."
Cualquier otro caracter introducido ser谩 omitido.

Nota: como ver谩s tambien estoy validando que si se pueda presionar el backspace:

VB.NET:
  1. If x = Convert.ToChar(8) Then 'backspace
  2.     e.Handled = False

pero el enter no tendr谩 ning煤n efecto sobre el cuadro de texto.

y lo que mencionaba sobre bloquear la impresion en pantalla del caracter tecleado se hace igualando a false el manejador del cuadro de texto:

VB.NET:
  1. e.Handled = False

Obviamente, para permitir que se imprima el caracter tecleado, entonces lo igualas a true.
F谩cil no??

Descarga