Você está na página 1de 30

VALIDACION CEDULA EN VB.

NET

Hola aqui les presento el algoritmo para validar el numero de cédulo de ua persona, a continuación el codigo en

VisualBasic205

• El ruc de una persona natural será 13 dígitos, sin letras, sin caracteres especiales , únicamente números, de los cuales

los 10 primeros será la cédula de identidad.

• El tercer dígito es menor a 6 ( 0,1,2,3,4,5 ).

• Los tres últimos dígitos son 001,002,003 etc., dependiendo el número de establecimientos adicionales.

• La validación de la cédula de Identidad pasa un algoritmo “Módulo 10”. Al número se lo divide en 13 partes, las 9

primeras son el número mismo, la 10 es el dígito autoverificador, y las 3 restantes indican si es principal o

establecimiento adicional.

• Las 2 primeras posiciones corresponden a la provincia donde fue expedida, por lo cual los dos primeros números no

será mayor a 22 ni menor a 1.

• Los 3 últimos bytes no podrán ser 000, ya que siempre por lo menos tendrá una principal.

• Los coeficientes usados para verificar el décimo dígito de la cédula, mediante el algoritmo “Módulo 10”

COEFICIENTES = 2.1.2.1.2.1.2.1.2 ( cuando el residuo es 0 el digito verificador es 0)

Ejemplo: cédula = 1710034065

2 1 2 1 2 1 2 1 2 (Coeficiente)

1 7 1 0 0 3 4 0 6 (Número de Cédula)

2 7 2 0 0 3 8 0 12 = 25 (Multiplicar cada dígito de la cédula por el

3 coeficiente, si es mayor a 10 sumo entre dígitos).

sumar las multiplicaciones

Del resultado de la suma

25/10= 2 Residuo 5 10-5 = 5 (dígito verificador)

Public Class BLCedulaIdentidad

Public Function compruebaCedula(ByVal numCedula As String) As Boolean

Dim dig1, dig2, num1, num2, num3, num4, num5, num6, num7, num8, num9 As String

Dim digProvincia, tercerDig, ultimoDig, resultSuma, residuo, valorComprovador As Integer

Try

dig1 = numCedula.Substring(0, 2)

dig2 = numCedula.Substring(2, 1)

digProvincia = CInt(dig1)

If (digProvincia >= 1 Or digProvincia <= 22) Then

tercerDig = CInt(dig2)
If tercerDig 9 Then

dig1 = sumaDig(dig1)

End If

If dig2 > 9 Then

dig2 = sumaDig(dig2)

End If

If dig3 > 9 Then

dig3 = sumaDig(dig3)

End If

If dig4 > 9 Then

dig4 = sumaDig(dig4)

End If

If dig5 > 9 Then

dig5 = sumaDig(dig5)

End If

If dig6 > 9 Then

dig6 = sumaDig(dig6)

End If

If dig7 > 9 Then

dig7 = sumaDig(dig7)

End If

If dig8 > 9 Then

dig8 = sumaDig(dig8)

End If

If dig9 > 9 Then

dig9 = sumaDig(dig9)

End If

valorComprovador = dig1 + dig2 + dig3 + dig4 + dig5 + dig6 + dig7 + dig8 + dig9

Catch ex As Exception

Throw

End Try

Return valorComprovador

End Function

Public Function sumaDig(ByVal numero As Integer) As Integer

Dim strNumero, strDig As String

Dim numDig, i, valor As Integer

Dim digitos As New List(Of String)

Try
strNumero = Str(numero)

numDig = strNumero.Length

For i = 1 To numDig – 1

strDig = strNumero.Substring(i, 1)

digitos.Add(strDig)

Next

For Each ele As String In digitos

valor = valor + CInt(ele)

Next

Catch ex As Exception

Throw

End Try

Return valor

End Function

End Class

Nota: Cuando el residuo es cero(0) el dígito verificador es 0.

_______________________________--------------------_____________________------------____

VALIDACION CEDULA EN C#

Hola el siguiente es un aplicativo realizado en c# y SQL 2000 que registra el


numero de horas que ha trabajado una persona que ha sido previamente registrada
en la base de datos (este ejemplo utiliza una base de datos SQL Server 2000), pero
con todo el script de la base de datos está adjuntado para que la puedas crear
fácilmente...

Una persona cuando desea registrar sus horas de trabajo (con su cedula) la tienes
primero que registrar y antes de realizar la inserción comprueba que sea un
número de cédula válido, para así registrarlo en la BdD.

Utiliza además ADO.NET para la conexión con la base de datos y las diversas
funcionalidades están separadas en clases

A continuación sigue código en C# nos presenta el algoritmo de validación del


numero de cedula ingresado en un textbox de 10 caracteres:

public class Cedula


{
public bool res;
public string num_cedula;
public Cedula(string num)
{
num_cedula=num;
}
public void comprobar_num()
{
int suma=0;
int j=0;
bool a=true;
int x=0;
for(int i=0;i<9;i++)
{
j=Convert.ToInt16(this.num_cedula[i].ToString());
if(a==true)
{
x=j*2;
if(x>9)
{
x=1+(x%10);
}
a=false;
}
else
{
x=j*1;
a=true;
}
suma+=x;

}
x=suma%10;
j=Convert.ToInt32(this.num_cedula[9].ToString());

if(x==0)
{
if(x==j)
{
res=true;
}
}
else
{
x=(suma-x)+10;
if(j==(x-suma))
{
res=true;

}
else
{
res=false;

}
}
}
}

No es tan complicada el entender el funcionamiento en sí del programa pero con


todo cualquier comentario se los agradeceremos mucho...

Ojo que necesitas por lo menos tener un motor de SQL Server para que funcione la
aplicación...

 
Un saludo a todos y espero que les resulte útil...

__________________------------------------___________________------------------____________

PRECARGA DE IMAGENES

Introducción
Muchas veces nos vemos en la obligación de lanzar algún que otro tipo de ejecución en segundo plano por
motivos varios y con la ayuda del objeto BackGroundWorker, una barrita de progreso y deshabilitando los
controles para impedir la invocación de otros eventos se realiza una solución óptima.

Pero en una ocasión mi compañero me comentaba que necesitaba algo especial y que fuese original (o por lo
menos que lo intentara).

Entonces recordé un proyecto web en el que trabajé (que si no recuerdo mal fue mi primer trabajo) y donde
usaban las archiconocidas capas con trasparencia y los "cargando... , espere por favor", hoy en día muy
usados en casi todas las web, y se me ocurrió la idea de aplicarlo en una aplicación WindowsForm surgiendo
entonces la clase frmPreload.vb que no es más que una simple clase que lanza una animación visual sobre
cualquier formulario que la invoque y donde se juega con la propiedad opacity de los controles form e
impidiendo la ejecución de otros eventos hasta que no finalice el subproceso... espero que os surjan muchas
ideas a partir de esta colaboración

(Un enorme saludo al equipo de desarrollo .NET de CORPME).

¿Como queda visualmente nuestro frmPreload.vb?


Nuestro primer paso... Entender lo que realmente está sucediendo
En el ejemplo que he utilizado he creado un formulario MDI que será el encargado de lanzar el proceso en
background  y de visualizar el formulario preload (de aquí en adelante frmPreload). Lo que realmente sucede
es que cuando usuario invoque el evento que lanza el subproceso en background, frmpreload se superpone al
formulario que le invoca quedando frmPreload ejecutándose en el hilo principal y el subproceso "costoso" en
segundo plano. Con esto conseguimos que el usuario no pueda ejecutar ningún tipo de acción sobre FormMDI
hasta que el subproceso haya finalizado o haya completado su ejecución.
En la siguiente imagen muestro gráficamente lo que ocurre. Un formulario con opacidad, gif animado y una
label descriptiva  se superpone a otro formulario.
Nota:
Como es lógico el frmPreload es una clase que hereda de window.form y en su constructor se
encarga de localizar y “sizearse” según el tamaño del invocador, a su vez frmPreload controla si el
usuario maximiza o minimiza el formulario formMDI desde la barra de tareas y deshabilita ctrl+f4. Es
evidente que tan solo es algo básico y muy mejorable. Pero eso ya lo dejo en el duende de cada uno.

Dejo como ejemplo de funcionamiento de la clase frmPreload el método que se encarga de localizar al
invocador y su vez centrar tanto el label como el gif de animación del frmPreload según los valores del size y
del location.

Private Sub inicializarPreload(ByVal _form As System.Windows.Forms.Form)


'Supendemos el diseño
Me.SuspendLayout()
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.ShowInTaskbar = False

'' Localizacion Inicial de los objetos


mLocationInicialPic = Me.picAjax.Location
mLocationInicialLab = Me.lbTextoPreload.Location
'' Size inicial del formpreload
mSizeInicialPreload = Me.Size
'' Aplicamos el size y location del formulario ....
Me.Size = _form.Size
Me.Location = _form.Location
'' Obtenemos el factor Localizacion con este algoritmo
factorEscalaX = (_form.Size.Width - mSizeInicialPreload.Width) / 2
factorEscalaY = (_form.Size.Height - mSizeInicialPreload.Height) / 2
'' A la localizacion inicial del picture sumamos eel nuevo valor obtenido
mLocationInicialPic.X += factorEscalaX
mLocationInicialPic.Y += factorEscalaY
'' Idem a label
mLocationInicialLab.X += factorEscalaX
mLocationInicialLab.Y += factorEscalaY

'' Aplicamos nuevas localizaciones


Me.picAjax.Location = New System.Drawing.Point(mLocationInicialPic.X, mLocationInicialPic.Y)
Me.lbTextoPreload.Location = _
New System.Drawing.Point(mLocationInicialLab.X, mLocationInicialLab.Y)

'Reiniciamos el diseño
Me.ResumeLayout()
End Sub

Una vez cogida la sartén por el mango a cocinar se dijo:


Como ya hemos comprendido lo que realmente queremos simular, en nuestro ejemplo será el clic del botón
nuevo fichero del formMDI el que lance nuestro proceso "costoso" y a su vez quien instancie y visualice
nuestro preload

A continuación detallo alguno de los métodos y eventos encargados de instanciar y visualizar la clase
frmPreload y que habría que implementar en nuestro FormMDI.

''' Como instanciar la clase frmPreload desde el evento clik de un boton y seguidamente
''' lanzar un proceso en segundo plano con el componente BackGroundWorker

Private Sub ClickBoton(ByVal sender As Object, ByVal e As EventArgs)

Handles NewToolStripMenuItem.Click, NewToolStripButton.Click


' Supendemos la logica de diseño
Me.SuspendLayout()
' Instanciamos el obj frmPreload para este invocador
wfPrecarga = New frmPreload(Me)
' Mostramos
wfPrecarga.Show()
' Forzamos la logica de diseño
Me.ResumeLayout(True)
' Obligamos a refrescar el area de diseño inmediatamente
wfPrecarga.Refresh()
' Finalmente lanzamos el subhilo de ejecucion
bwPrecarga.RunWorkerAsync()
End Sub

***********************EVENTOS BACKGROUND WORKER **************************

Evento DoWork del componente BackGroundWorker


Private Sub bwPrecarga_DoWork(ByVal sender As Object, ByVal e As _
System.ComponentModel.DoWorkEventArgs)Handles bwPrecarga.DoWork
' Nota: Como yo no tengo proceso "costoso" lanzo una "iteracion dormida" cada medio segundo.
For index As Integer = 1 To 10
Threading.Thread.Sleep(500)
Next
* AQUI TU CODIGO *
End Sub

''' Evento RunWorkerCompleted

Private Sub bwPrecarga_RunWorkerCompleted(ByVal sender As Object, ByVal e As _


System.ComponentModel.RunWorkerCompletedEventArgs) Handles
bwPrecarga.RunWorkerCompleted
wfPrecarga.Dispose()
End Sub
**********************************************************************************************

Nota:
Recordar que tenemos que añadir un objeto a nuestro FormMDI del tipo BackgroundWorker desde la
barra de herramientas, yo en mi caso lo he llamado "bwPrecarga"

Espero haberme explicado con claridad y no haber dejado ningún tipo de duda a la hora de implementar la
clase frmPreload.vb, aun así he decidido acompañarlo de un Zip con un ejemplo en funcionamiento y donde
se puede ver el código completo.
Danicuco 2009.

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


System.Windows.Forms

Compromiso del autor del artículo con el


sitio del Guille:
Lo comentado en este artículo está probado (y funciona) con la siguiente
configuración:

 Sistema operativo:

o Windows XP SP2

 IDE (entorno de desarrollo):

o Visual Studio 2008 Professional

o Visual Studio 2005 Standard

 Base de datos:

o No se usa base de datos

________________________----------------------_____________________

Vamos a trabajar por pasos el primero paso por supuesto es abrir VISUAL
BASIC.NET.
Justo en esa imagen pueden ver como yo estoy agregando un nuevo proyecto
seleccionen Aplicacion de Windows Form y le colocan un nombre en mi caso yo le
coloque “Accesoadatos” ustedes le pueden colocar el nombre que quieran

Ya al tener este paso cumplido vamos a observar que no queda una panalla donde
diseñar nuestro sistema con una pantalla principal llamada Form1:

Ok luego nos vamos a ir al Explorador de soluciones que es donde se van a encontrar


todos los elemntos de tu proyecto de programacion para abrir el explorador de
soluciones lo puedes encontrar del lado derecho o si no esta activo puedes ir al MENU
ver y activas la que dice Explorador de Objetos. A lo que lo tengan activo van a
presionar click derecho sobre el nombre de su solucion en mi caso fue “Accesoadatos”
(presiono click derecho) y selecciono Agregar Nuevo elemento.
En la lista que aparece para agregar nuevos elementos a nuestro proyecto debelos
seleccionar el ojeto Base de datos basada en servicio para poder tener una base de
datos donde almacenas y funciones bajo windows la otra opcion muy parecida se utiliza
para base de datos para aplicaciones Moviles.. por ellos no seleccionamos bases de
datos local, debes cuidar que la extension del archivo que agregas a la solucion es
.MDF asi estaras mas seguro cambia el nombre de la base de datos a tu gusto en mi
caso le coloque BDejemplo.mdf aqui pueder ver el ejemplo en pantalla:

al darle al boton agregar va a hacer unos procesos y va a aparecer un asistente para base
de datos al cual debes darle acepar de lo contrario ese asistente creara un Dataset Tipaso
propio y lo ideal es que tu sepas como agregarlo manualmente. Una vez que ya nuestra
base de datos esta creada procedemos a darle desde el explorador de objetos  dos veces
click a la base de datos para poder visualizar del lado izquierdo el Explorador de base
de datos muy importante para crear nuestras tablas y procedimientos te fijaras que hay
una parte que dice TABLAS presionando click derecho y seleccionar agregar nueva
Tabla lo puedes ver en la siguiente imagen:
ya al precionas podemos agregar los campos que tendra nuestra tabla para hacerlo mas
sencillo vamos a agrega solo tres campos de manera que exliquemos hoy como agregar
un elemento y como mostrar los datos de la tabla. Los Campos sera Cedula que sera un
campo clave, nombre y apellido. Ningun va a permitir valos nulo la cedula sera de tipo
numerico y nombre y apellido nvarchar(50). Lo pueden ver en la imagen:

solo queda precionar salir y te pedira que guardes la tabla con el nombre que tu quieras
en mi caso le coloque alumnos,ahora procedemos a agregar unos datos de ejemplo a
nuestra tabla asi como agregamos nueva tabla: le van a dar click derecho al nombre de
la tabla que acaban de agregar y le dan a la Opcion Mostrar datos de tabla hay prodran
agregar algunos datos de ejemplo.
Solo queda presionar guardar y ahora es hora de diseñar el formulario para poder dar el
ejemplo solamente se usaran los siguientes controles: Un Datagrig para mostrar los
datos tres Botones uno para guardar otro para cargar los datos y otro para salir del
sistema, tres textbox para agregar los tres datos de la base de datos de ejemplo y tres
label para identificar a que dato corresponde cada textbox. Para ello debemos hacer uso
del cuadro de herramientas para agregar los controles al formulario se puede ver del
lado izquierdo y si no esta activo pueden ir al menu Ver y activar Cuadro de
herramientas.

Aqui como puede observar ya he agregado los controles,  les recuerdo que .NET es
Orientado a objetos y todo objeto tiene sus propiedades estados y metodos.. por ellos es
importante sabes con que propiedades vamos a trabajar la mayoria de los controles
encontramos en sus propiedades valga la redundacia la proiedad TEXT y la propiedad
NAME text en el nombre que se va a visualizar y NAME el nombre como se
reconocera programaticamente ese objeto las propiedades las podemos observar del lad
Derecho al momento de seleccionar uno o varios objetos si no salen puedes ir al menu
ver y activas ventana propiedades.
si pueden observar modifique la propiedad TEXT  de los label para identificar que dato
va en cada textbox y y los nombres de cada boton ahora vienen haciendo a la propiedad
name que no va a producir ningun cambio solo lo veran mas adelante como ejemplo
deben saber que cada control tiene un nombre clave para saber que tipo es por ejemplo
los Label lleval LBL los textboc llevan TXT  y los botones CMD si quiero identificar
los tres notones y los tres textbox programaticamente modifico la propiedad name de
cada uno y usaria TXTcedula, TXTnombre. TXTapellido, CMDguardar, CMDsalir,
CMDcargar y aun falta el datagrig yo personalmente le coloco DGW es decir en este
caso le colocaria DGWdatos. de esta menera estaran organizados los nombres
programaticamente y mas adelante veran la importancia de hacer esto.

Ahora toca agregar un sistemas de tipos a nuestro proyecto al igual que agregamos la
base de datos vamos a presionar en el Explorardor de soluciones click derecho sobre el
nombre de nuestro proyecto y agregar un nuevo elemento, es este caso debemos agregar
un conjunto de datos que tiene extension .XSD por nombre yo le coloque DSprueba
ustedes le colocal el nombre que ustedes quieran una vez que agregamos su nombre le
damos agregar:
una vez que
agrgamos aparecera una pantalla de fondo celeste con el siguiente mensaje:

Utilice el diseñador de base de datos para trabajar con un conjunto de tablas con tipo

 Solo queda arrastras la tabla que creamos a ese diseñador de datos con tipo:

Una ves agregada nos aparecera la tabla con sus campos y en la parte de abajo metodos
para buscar esos datos donde a este vamos a agregar dos consultas de las cuales una ya
la tiene por defecto y la otra es para guardar los datos es decir vamos a usar sentencias
TRANSAC SQL para insert y para select. quiza te sea un poco extraño esto pero poco
a poco te vas acostubrando solo es cosa de practicar querer aprender y no tenerle
miedo , el metodo que se agrega or defecto se llama FILL,Getdata a este metodo le
vamos presionar click derecho y le damos a la opcion agregar conculta,
Al presionar esta opcion tendremos un asistente que nos ayudara con esto del tractac
SQL que ya les voy a explicar.. la primera opcion que sale s es que si queremos crear un
sentencia SQL, un procedimiento almacenado y un procedimiento almacenado ya
existente por experiencia es mejor usar procedimientos almacenados los invito a que
investigues sobre ellos son recomendados en las buenas practicas de programacion y
acceso a datos en si todos vamos a elegir la segunda opcion y nos saldra entonces la
siguiente pantalla:

donde podran ver que la primera opcion  es un select que devuelve una fila en este
caso es si quieres el valos de una o varias filas dependiento del dato que desees por
ejemplo dame el dato donde la celula sea tal, en este ejemplo solo obtendras un
resultado por que es imposible hayan dos personas con el mismo numero de cedula pero
si fuera apelldido si es posible tener mas de dos resultados esta es la que usaremos pero
ya por defecto ya esta realizado, en el segusdo caso es un Select que devuelve un solo
valor: en esta opcion podran optener resultados como cuantos registros tienen en su
tabla hacer una suma de una columna que contenga valores como sueldos entre otras
esta no la usaremos en este caso, en el tercer caso es un UPDATE se utiliza para
actualizar datos de un registri que ya existe es decir la funcion MODIFICAR, para el
cuarto se trata de un DELETE logicamente se utiliza para eliminar registros de la tabla
y por ultimo un INSERT es lo mismo que guardar  datos y es el que utilizaremos para
darle funcion al boton guardar asi que este es el que vamos a seleccionary visualizaras
luego la siguiente pantalla:

esta es la consulta o TRANSAC SQL si no estas de acuerdo con lo que el asistente hizo
puedes modificarlo y personalizarlo presionando GENERADOR DE CONCULTAS.
En tra ocacion explico mas profundamente esta parte al presionar generador de conculta
le dan aceptar para mejorar esa consulta sql que debe quedar de esta forma para los
datos que trabajo y nombre de la tabla

INSERT INTO Alumnos


                         (Cedula, Nombre, Apellido)
VALUES        (@Cedula,@Nombre,@Apellido)

si aparece algo mas luego de precionar aceptar sobre el generador de consulta borrenlo y
deje solo esto que les coloque normalmente se agrega algo como esto

SELECT Cedula, Nombre, Apellido FROM Alumnos WHERE (Cedula = @Cedula)

y se utiliza para que luego de agregar los datos llamarlos de una vez pero en este caso
no lo vamos a usar.

luego de presionar en siguiente solo les pedira el nombre del procedimiento almacenado
y el nombre de la función ya listo ya tenemos nuestro diseñador de dataset con dos
funciones una que se agrego por defecto llama da fill,GET y la segunda agregada por
nosotros para guardar datos llamada en mi caso le coloque como nombre INSERALUM
ustedes pueden colocarle el que quiera pero este nombre lo utilizaremos mas adelante.
Asi nos debe quedar nuestro dataset en el diseñador.
Ahora toga agregar codigo a los botones lo primero que haremos es agregar codigo al
boton guardar le dareos dos veces click para ir al evento click de ese boton asi a lo que
presionesmo click se ejjecutara el codigo que le coloquemos, Debemos aprender como
llamar a los datos de un Dataset Tipados Basicamente hay que hacer dos instanciar
de nuevo programacion orientada a objetos ests datos estas almacenados en unas clases
que crea visual studio debemos llamar a esas clases para que nos permita trabajar con
los metodos iseralum y FILL para ellos se agrega el siguiente codigo:

 
Dim
ds As New DSprueba.AlumnosDataTable
Dim dt As
NewDSpruebaTableAdapters.AlumnosTableAdapter
 
 Quiza lo puedan ver mejor desde la imagen:

 se seclararon dos variables ds y dt dt es la que usaremos para acceder al metono


inseralumn agregando el codigo
 

dt.insertalum(TXTcedula.Text, TXTnombre.Text,
TXTapellido.Text)
 

en la imagen notamos como a agregar el codigo dt.inseralum( nos ayuda a ver que
valores debemos agregar pidiendonos cedula, nombre y apellido, hay es donde se
justifica el por que agregar nombre programaico a cada text box ya con solo hacer esto
el boton guardar funciona vamos a agrega el metodo fill al boton cargar debemos hacer
lo mismo si queremos lo que hacemos es sacar las primeras dos lineas de codigo para
que funcione generalmente para cualquier boton asi solo agregamos el sigiente codigo
presionando dos veces click en el boton cargar.

dt.Fill(ds.alumnos)
DGWdatos.DataSource = ds.alumnos
 
 
 
De esta manera al presionar sobre el boton gargar el datagrig se llenara de los datos de
la tabla alumnos solo falta el boton salir presiona dos veces click y presiones el codigo
 

End
 
Espero les haya gusta proto les coloco el codigo completo y el para que descargen el
ejemplo espero que les haya servido de mucho a quiene lo lean.

_____________________-------------------------_________________

Como validar (validación) Cuadros (campos) de Texto en


Visual Basic .Net (vb)
28Jan2008 Archivado en: Programación, Programas Rapidos, Visual Basic Autor: Angel López

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:
PLAIN TEXT
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:

PLAIN TEXT
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:

PLAIN TEXT
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:

PLAIN TEXT
VB.NET:

1. e.Handled = False

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

Para validar texto y números

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As _ System.Windows.Forms.KeyPressEventArgs)


Handles TextBox1.KeyPress
If e.KeyChar.IsLetter(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsSeparator(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub

Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As _ System.Windows.Forms.KeyPressEventArgs)


Handles TextBox2.KeyPress
If e.KeyChar.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf e.KeyChar.IsControl(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub

______________________-----------------------------------__________________________-----------------------------____
VALIDAR TEXTO
Private Sub Text1_KeyPress(ByVal sender As Object , _
ByVal e As System.Windows.Forms.KeyPressEventArgs) Handless
Text1.KeyPress
' en la siguiente línea de código se comprueba si el caracter es
dígito...
if( not e.KeyChar.IsDigit(e.KeyChar)) Then
' de igual forma se podría comprobar si es caracter:
e.KeyChar.IsLetter
' si es un caracter minusculas: e.KeyChar.IsLower ...etc
If Not (e.KeyChar = Convert.ToChar(Keys.Back)) Then
e.Handled = true ' esto invalida la tecla pulsada
End If
End If
End If
End Sub

VALIDAR TEXTO OK

Private Sub txtPruebaTexto_KeyPress(ByVal sender As Object, _


ByVal e As
System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress

If Char.IsLetter(e.KeyChar) Then
e.Handled = False
ElseIf Char.IsControl(e.KeyChar) Then
e.Handled = False
ElseIf Char.IsSeparator(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub

VALIDAR NUMEROS OK
Private Sub txtPruebaNumero_KeyPress(ByVal sender As Object, _
ByVal e As
System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox2.KeyPress

If Char.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf Char.IsControl(e.KeyChar) Then
e.Handled = False
ElseIf Char.IsSeparator(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
MsgBox("Ingrese solo numeros...", MsgBoxStyle.Exclamation,
"Alerta")
End If
End Sub

Private Sub txtPruebaNumero_KeyPress(ByVal sender As Object, _


ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles txtPruebaNumero.KeyPress

If Char.IsDigit(e.KeyChar) Then
e.Handled = False
ElseIf Char.IsControl(e.KeyChar) Then
e.Handled = False
ElseIf Char.IsSeparator(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
PARA LIMPIAR TEXTO
Private Sub LimpiarTextBox(ByVal ofrm As Form)

'hace un chequeo por todos los textbox del formulario


For Each oControl As Control In ofrm.Controls
If TypeOf oControl Is TextBox Then
oControl.Text = ""
End If
Next
End Sub

Private Sub BtnPruebaLimpiarTextBox_Click( _


ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

Call LimpiarTextBox(Me)

End Sub

'Declaramos nuestro metodo que hara la limpieza de los textbox


Private Sub LimpiarTextBox(ByVal ofrm As Form)
'hace un chequeo por todos los textbox del formulario
For Each oControl As Control In ofrm.Controls
If TypeOf oCobtrol Is TextBox Then
oControl.Text = ""
End If
Next
End Sub

Private Sub BtnPruebaLimpiarTextBox_Click( _


ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles BtnPruebaLimpiarTextBox.Click

Call LimpiarTextBox(Me)

End Sub

Iniciado por luis557


Hola David e echo un programa y quisiera guardar datos de unos texbox en un fichero para
poder abrirlos y que cojan el valor guardado

Gracias

Código:
Sub SaveTextBoxInFile(ByVal FileName As String, ByRef Text As TextBox)
On Error Resume Next
Close
Open FileName For Output As #1
If Err > 0 Then Exit Sub
Print #1, Text.Text
Close
End Sub
Sub GetFileToTextBox(ByVal FileName As String, ByRef Text As TextBox)
On Error Resume Next
Close
Open FileName For Input As #1
If Err > 0 Then Exit Sub
Text.Text = Input(LOF(1), 1)
Close
End Sub
Private Sub Command1_Click()
GetFileToTextBox "C:\Texto.txt", Text1
End Sub
Private Sub Command2_Click()
SaveTextBoxInFile "C:\Texto.txt", Text1
End Sub
Por ayudar. Dejo el código que borra todos los TextBox, incluídos los que se encuentran
dentro de un GroupBox.

Aquí está:

‘Declaramos nuestro metodo que hara la limpieza de los TextBox


Sub clearControls(ByVal pForm As Form)
‘Hacemos un chequeo por todos los controles del Form
For Each oControl As Control In pForm.Controls
‘Si un control del Form resulta ser GroupBox?????????
If TypeOf oControl Is GroupBox Then
‘Hacemos un chequeo por todos los controles del GroupBox
For Each subControl As Control In oControl.Controls
‘Si un control del GroupBox es un TextBox????
If TypeOf subControl Is TextBox Then
‘Entonces borramos su texto
subControl.Text = “”
End If
Next
End If
‘Si un control del Form resulta ser TexBox???????????
If TypeOf oControl Is TextBox Then
‘Entonces borramos su texto
oControl.Text = “”
End If
Next
End Sub

PROYECTOSISTEMAS07@HOTMAIL.COM matias

jorgeluisjacomeperez1971@gmail.com

Public Sub limpiarcontroles()

Dim obj As Control

'Este procedimiento me borra las cajas de texto

For Each obj In Me.Controls


            If TypeOf obj Is TextBox Then  'Cambiar esta linea para inicializar

diferentes tipos de controles


                CType(obj, TextBox).Text = ""
            End If
        Next obj
   End Sub

Esto iría en el botón que llama al formulario MATEMATICA (obviamente con las variables que
utilices vos)

(UIEjemplo es el formulario MATEMATICA EN TU CASO)

Dim formEjemplo As UIEjemplo

formEjemplo = New UIEjemplo()

formEjemplo.ShowDialog()

Y en el boton salir del formulario MATEMATICA iria esto

Close()

Saludos

 ------------------------------------------------------------

Pon en frmatematicas un boton que diga lo siguiente


Me. hide()
frm_menu. show()
esto te ayudara a regresar al menu.
Yo te recomiendo que utilices visual studio 2010 es chevere tienes nuevos add ins.

Para limpiar los controles de un GroupBox se


implementa el sigueinte procedimiento
'Procedimiento para borrar controles en un GroupBox

Private Sub Limpiar(ByVal Grupo As GroupBox, ByVal tipo As String)


Dim miControl As Object
For Each miControl In Grupo.Controls
If tipo = "CT" Then
If miControl.GetType Is GetType(System.Windows.Forms.TextBox)
Then
miControl.Clear()
End If
End If

''' implementar para otros controles en el GroupBox


Application.DoEvents()
Next
End Sub

y para ejecutarlo se implementa lo siguiente:

Private Sub LimpiarCajasGrupo(ByVal sender As System.Object, _


ByVal e As System.EventArgs) Handles cmdLimpiarCajasGrupo.Click
Limpiar(Me.GroupBox1, "CT")
End Sub

BORRAR TEXTO DE UN GROUPBOX

Dim caja as TextBox


For Each ctrl As Control in gb.Controls
caja = TryCast(ctrl,TextBox)
If Not (Caja Is Nothing) Then
caja.Clear()
End If
Next ctrl

ENLAZAR A UNA WEB DESDE UN LINKLABEL

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _


As System.EventArgs) Handles MyBase.Load
LinkLabel1.Text = "Click here to get more info."
LinkLabel1.Links.Add(6, 4, "www.microsoft.com")
End Sub

Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal _


e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles _
LinkLabel1.LinkClicked
System.Diagnostics.Process.Start(e.Link.LinkData.ToString())
End Sub

Dim

Você também pode gostar