Está en la página 1de 27

Lo primero es validar si existen o no datos, es decir si no esta vacía la caja de texto.

Hay varias formas de hacerlo


es obtener el tamaño del contenido de la caja de texto y si este es menor a cero entonces significa que esta vacío:

?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
1Button1.Click
2 If Len(TextBox1.Text) <> 0 Then
3 Else
MessageBox.Show("Debes digitar tu número de <span class="IL_AD"
4id="IL_AD7">documento</span>")
5 End If
6 End Sub

Otra forma puede ser comparándolo como si fuera una simple cadena de texto, a diferencia de la forma anterior que
utilizábamos números enteros, ya que la función Len() retorna un número entero que contiene el número de
caracteres de una cadena.

1If TextBox1.Text <> "" Then


2 Else
MessageBox.Show("Debes digitar tu número de documento")
3 End If
4

Comprobar los tipos de datos de los formularios en Visual Basic .NET

Una vez hayamos comprobado que el usuario a introducido o no datos debemos comprobar que el tipo de dato que a
introducido, es decir si es un número o una fecha o una simple cadena. Para el caso de los números lo podemos
comprobar con la función IsNumeric() de esta forma:

?
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.<span
1class="IL_AD" id="IL_AD11">Windows</span>.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
2 If Not IsNumeric(e.KeyChar) Then e.Handled = True
3 End Sub

Todo desde la propiedad Keypress del Textbox al que queremos aplicarle el filtro. En este caso si no es un número
lo que se esta presionando entonces la propiedad e.Handled retorna verdadero y este no dejará que se tecleen
caracteres, igual si quitamos el Not del condicional este solo nos dejará escribir letras.

*******************************************************************************

Hola: acá les dejo un ejemplo muy sencillo en visual basic .net para evaluar las teclas presionadas cuando se
ingresan datos en un textbox y solo permitir las letras ignorando todo lo que no sea una letra. Es muy básico pero
les servirá de punto de partida para validar cualquier ingreso. A continuación el código….

view source

print?
1.Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
2. If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then
3. e.Handled = True
4. End If
5.End Sub

************************************************************************

El siguiente código es para que en un textBox podamos ingresar solo números si quieres ingresar solo enteros le pones al momento de
utilizar la función que decimales sea igual a false caso contrario le pones true.

Primero debemos pegar la siguiente funcion


Public Function txtNumerico(ByVal txtControl As TextBox, ByVal caracter As Char, ByVal decimales As Boolean) As Boolean
If (Char.IsNumber(caracter, 0) = True) Or caracter = Convert.ToChar(8) Or caracter = "." Then
If caracter = "." Then
If decimales = True Then
If txtControl.Text.IndexOf(".") <> -1 Then Return True
Else : Return True
End If
End If
Return False
Else
Return True
End If
End Function

Segundo en el evento Key Press de nuestro textBox digitar lo siguiente:


e.Handled = txtNumerico(txtCosto, e.KeyChar, true)

En este caso permitira el acceso de numeros con su punto decimal

Espero que este codigo le sirva a alguien el rato que necesite una funcion que haga esto no la encontre. Cualquier consulta o falla del
código haganmela llegar

************************************************************************************

Validar correo electrónico

Normalmente se nos presenta el inconveniente de saber si la dirección de correo electrónico que están escribiendo
nuestros usuarios esta en un formato valido o no, para este fin el proceso a realizar es, la validacion de las partes
básicas de un correo electrónico, tal como una @ un . (Punto) y un dominio consecuente

Para poder lograr esta validacion usaremos una expresión regular, en vb.net

Espacio de nombres:

mports System.Text.RegularExpressions

Función

Public Function validar_Mail(ByVal sMail As String) As Boolean

' retorna true o false

Return Regex.IsMatch(sMail, _

"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-

9-]+)*(\.[a-z]{2,4})$")
End Function

Llamado a la funcion la cual puede ser desde el evente leave de el textbox deseado

If validar_Mail(LCase(TxtMail.Text)) = False Then

MessageBox.Show("Dirección de correo electronico no valida,

el correo debe tener el formato: nombre@dominio.com, " & _

" por favor seleccione un correo valido", "Validación de

correo electronico", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation)

TxtMail.Focus()

TxtMail.SelectAll()

End If

Función para validar la entrada de datos numéricos por teclado en un formulario de vb.net.

Voy a explicar la rutina que utilizo yo para validar la entrada de datos numéricos en un formulario
realizado en vb.net.
La función es la siguiente, creo que no hace falta explicación, con los comentarios tenemos suficiente
información. Si hace falta alguna aclaración, ya sabeis un comentario en el post y ya os responderé.

La llamada a la función se realizará dentro del evento "TextChanged".

************************************************************
Mira independientemente de que plataforma usas (Web o Windows forms) los formularios de validacion de usuarios y
contraseñas siguen los mismos principios

Para poder hacer la validación necesitas pegar


TextBox de nombre
TextBox de contraseña
Boton de aceptar
Boton de cancelar

Para validar a los usuarios debes tener incluidos los nombres de los usuarios en una tabla de tu base de datos, donde se
incluye Id, nombre, contraseña.

Cuando el usuario presione el botón de aceptar necesitas llamar a una funcion booleana que te indica si el usuario existe o
no en la base de datos, en caso afirmativo pasa a la forma o pagina web principal, en caso contrario le envias el mensaje en
donde indicas que el usuario no existe.

Te dejo un ejemplo de la funcion boolena

-------------------llamado a la funcion
Private Sub Command1_Click()
IF ExisteUsuario(txtUser.text, txtContraseña.text) THEN
'Mandar a llamar aqui a la siguiente forma o pagina web
ELSE
Msgbox "El usuario no existe"
END IF

end sub

-------------------FUNCION
private function ExisteUsuario(byval usuario, byval contraseña) as boolean
...aqui ingresas el codigo que buscara en la base de datos para ver si existe el usuario, logicamente tu control que hace las
consultas tambien puede retornar el conteo de los registros encontrados, en este caso si existe un valor mayor a cero (es
decir que si se retorno un registro) entonces la funcion retorna true, en caso contrario retorna un false
end function

********************************************************************

ToolTip: Explotemoslo al maximo!


Muchas veces solo nos limitamos a asignar un ToolTip a un control como un botón o una imagen y nos olvidamos de
la cantidad de configuraciones que nos ofrece este simple pero completo control!

(Mi intención es explotar al máximo el rendimiento de este objeto y eso que he tenido mis dudas hoy sobre que escribir, ya que mi primera
intención era el errorprovider, pero lo dejare para la siguiente vez.)

Bueno, empecemos, lo primero insertaremos dos botones y un ToolTip en nuestro formulario y nos aseguramos que
su propiedad Active este a True. Para asociar el ToolTip a nuestros controles solo tenemos que utilizar el método
setToolTip
ToolTip.SetToolTip(btnAceptar, "Boton Aceptar")
ToolTip.SetToolTip(btnCancelar, "Boton Cancelar")

Como veis es muy sencillo, con un solo tooltip podemos asignar todos los controles, aunque asi no podemos
personalizarlos, necesitariamos mas instancias del objeto. Esto me imagino que todos ya sabriais ahora vamos a
personalizarlo un poquillo.

Propiedad

IsBallon (Boolean): Si esta a true se muestra como un bocadillo.

TootTipIcon(enumeracion): Se asigna iconos.

ShowAlways(Boolean): si esta a true aunque no tenga el foco la aplicación se podra ver el tooltip.

ToolTipTitle (String): una cadena que representara el titulo del objeto.

Tambien podemos configurar el color del fondo con el BackColor y el color de letra con la propiedad ForeColor. Asi
como la animacion y el efecto de atenuacion con UseAnimation y UseFading

Una vez visto el cambio de imagen que le podemos dar a nuestro tooltip ahora toca de configurar su comportamiento.

Tenemos 3 propiedades que serán las que controles su comportamiento.

- AutoPopDelay: Controla la cantidad de tiempo que se mostrara el tooltip


- InitialDelay: Controla la cantidad de tiempo que debe estar el ratón encima para que se muestre.
- ReshowDelay: controla el tiempo que tardara en aparecer un tooltip después de que se cierre el anterior. Es decir, si
se esta mostrando un ToolTip y te sitúas encima de otro objeto que también posee otro tooltip tardara el tiempo que se
estipule en esta propiedad.

* Todas estas propiedades están en milisegundos.

Si quieres un calculo automático de estas propiedades solo tienes que meter el tiempo en AutomaticDelay la cantidad
de tiempo en milisegundos y estas tres propiedades se calcularan siguiendo estos criterios 5 * N , N , N/5 siendo N la
cantidad introducida en AutomaticDelay.
Bueno esto es mas o menos todo, ya veis que se pueden hacer varias cosas y no solo mostrar el tooltip! dale un poco
de color a tu aplicaión!!

***************************************************

Combobox

**************************************************

EXPRESIONES REGULARES

Ejemplos de expresiones regulares


Correo “^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0- Por ejemplo name@gmail.com
electrónico 9]{1,3}\.)|(( [a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-
9]{1,3})(\]?)$”
URL “^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0- Por
9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$” ejemplo http://www.frogx3.co
m
Contraseña segura “(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$” Entre 8 y 10 caracteres, por lo
menos un digito y un
alfanumérico, y no puede
contener caracteres espaciales
Fecha (EEUU) “^\d{1,2}\/\d{1,2}\/\d{2,4}$” Por ejemplo 01/01/2005
Fecha (EEUU) “^\d{1,2}\/\d{1,2}\/\d{2,4}$” Por ejemplo 01/01/2005
Moneda “^(-)?\d+(\.\d\d)?$” + o – cantidad, sin ningún
símbolo. Si tiene punto decimal,
decimal, requiere 2 caracteres
numéricos después del punto
decimal
Númerotarjeta de “^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(- Número tarjeta de crédito como
crédito ?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$” Amex, Visa, MasterCard,
Discover
Númerotelefono “^0[1-6]{1}(([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0- .
(Francia) 9]{2}){4})$”
Númerotelefono “^[0-9]{2,3}-? ?[0-9]{6,7}$” .
(España)
Númerotelefono “^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$” .
(EEUU)
Código “^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$” .
postal (Francia)
Codigo “^(V-|I-)?[0-9]{4}$” .
postal (Italia)
Código “\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24- .
postal (Alemania 9]\d{3})|(?: [6][013-9]\d{3}))\b”
)
Código “^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$” .
postal (España)
Código “^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zA- .
postal (EEUU) Z]\d)$”
Númeroseguro “^((\d(\x20)\d{2}(\x20)\d{2}(\x20)\d{2}(\x20)\d{3}(\x20)\d{3 .
social (Francia) } ((\x20)\d{2}|))|(\d\d{2}\d{2}\d{2}\d{3}\d{3}(\d{2}|)))$”
Númeroseguro “^\d{3}-\d{2}-\d{4}$” .
social (EEUU)
Tarjeta de “^([0-9a-zA-Z]{12})$” Por ejemplo 001234567000
identificación
(Francia)
Tarjeta de “^([0-9a-zA-Z]{12})$” Por ejemplo AA 1234567
identificación
(Italia)
Número pasaporte “^([a-zA-Z]{2})\s([0-9]{7})$” Por ejemplo 123456789
(Francia)
IBAN (Alemania) “DE\d{2}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{2}|DE\d{20}” .
IBAN (España) “ES\d{2}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}|ES\d{22}” .
Certificado de “^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0- .
Identificación 9]{3} [A-Za-z]{1}$”
Fiscal (Italia)
Certificado de “^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-
Identificación Z]|\d{8}(-|\.)?[A-Z])$”
Fiscal (España)

***************************************************
Formatos de fecha

Public Function ChangeFormat(ByVal dtm As DateTime, ByVal format As String) As String

2 Return dtm.ToString(format)

3 End Function

Then When I use it I call it like so:

view source

print?

1 TextBox1.Text = ChangeFormat(DateTime.Now,"MM/dd/yyyy")

……………
**********************************************************************

Como convertir números a letras

He visto muchas veces esta pregunta en los foros, si mal no recuerdo en el año 2000 alguién que no
recuerdo su nombre envío el siguiente algoritmo para VB 6.0 para realizar dicha conversión.... ha sido unos
de los mejores que he visto.. a continuación se los adjunto, espero que también les puedan servir.
Sirve tanto para VB 6.0, como para Visual Basic .NET

Public Function Num2Text(ByVal value As Double) As String


Select Case value
Case 0 : Num2Text = "CERO"
Case 1 : Num2Text = "UN"
Case 2 : Num2Text = "DOS"
Case 3 : Num2Text = "TRES"
Case 4 : Num2Text = "CUATRO"
Case 5 : Num2Text = "CINCO"
Case 6 : Num2Text = "SEIS"
Case 7 : Num2Text = "SIETE"
Case 8 : Num2Text = "OCHO"
Case 9 : Num2Text = "NUEVE"
Case 10 : Num2Text = "DIEZ"
Case 11 : Num2Text = "ONCE"
Case 12 : Num2Text = "DOCE"
Case 13 : Num2Text = "TRECE"
Case 14 : Num2Text = "CATORCE"
Case 15 : Num2Text = "QUINCE"
Case Is <; 20 : Num2Text = "DIECI" & Num2Text(value - 10)
Case 20 : Num2Text = "VEINTE"
Case Is <; 30 : Num2Text = "VEINTI" & Num2Text(value - 20)
Case 30 : Num2Text = "TREINTA"
Case 40 : Num2Text = "CUARENTA"
Case 50 : Num2Text = "CINCUENTA"
Case 60 : Num2Text = "SESENTA"
Case 70 : Num2Text = "SETENTA"
Case 80 : Num2Text = "OCHENTA"
Case 90 : Num2Text = "NOVENTA"
Case Is <; 100 : Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
Case 100 : Num2Text = "CIEN"
Case Is <; 200 : Num2Text = "CIENTO " & Num2Text(value - 100)
Case 200, 300, 400, 600, 800 : Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"
Case 500 : Num2Text = "QUINIENTOS"
Case 700 : Num2Text = "SETECIENTOS"
Case 900 : Num2Text = "NOVECIENTOS"
Case Is <; 1000 : Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
Case 1000 : Num2Text = "MIL"
Case Is <; 2000 : Num2Text = "MIL " & Num2Text(value Mod 1000)
Case Is <; 1000000 : Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
Case 1000000 : Num2Text = "UN MILLON"
Case Is <; 2000000 : Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)
Case Is <; 1000000000000.0# : Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "
If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " &
Num2Text(value - Int(value / 1000000) * 1000000)
Case 1000000000000.0# : Num2Text = "UN BILLON"
Case Is <; 2000000000000.0# : Num2Text = "UN BILLON " & Num2Text(value - Int(value /
1000000000000.0#) * 1000000000000.0#)
Case Else : Num2Text = Num2Text(Int(value / 1000000000000.0#)) & " BILLONES"
If (value - Int(value / 1000000000000.0#) * 1000000000000.0#) Then Num2Text = Num2Text & "
" & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)
End Select

End Function

****************************************************************

¿Desea salir del programa?

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles


MyBase.Closing

' Utilizamos la cancelación del método Closing

If MessageBox.Show("¿Desea Salir?", "Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) =


DialogResult.No Then

' Con el if, mandamos el messagebox y si la respuesta es un No, entonces cancela el método closing

e.Cancel = True

End If

End Sub
*****************************************************************************************

Datagrid. Seleccionar toda la fila al hacer click

Para poder seleccionar toda la fila de un grid al hacer click encima utilizaremos la siguiente función:

Private Sub DgUrls_MouseUp(ByVal sender As System.Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles DgUrls.MouseUp
Dim pt As System.Drawing.Point
pt = New Point(e.X, e.Y)

Dim hti As DataGrid.HitTestInfo


hti = DgUrls.HitTest(pt)
If hti.Type = DataGrid.HitTestType.Cell Then
DgUrls.CurrentCell = New DataGridCell(hti.Row, hti.Column)
DgUrls.Select(hti.Row)
End If
End Sub

Donde DgUrls es el nombre del datagrid

*****************************************************************************

Solovb es un sitio que se caracteriza por sus ejemplos simples y sencillos. Hoy un ejemplo del uso de TabControl.

En más de una oportunidad tuve la necesidad de seleccionar mediante código que pagina (TabPage) del control
debería ser la que se mostrara, la solución es sencilla pero quizas la estes necesitando en este momento y aquí te la
dejo.

Primero necesitaremos un formulario windows, un TabControl y algunos botones dispuestos de forma similar a lo
que se ve en la siguiente imagen:
Y ahora en el evento click de cada botón debemos ingresar el siguiente codigo

view source

print?
01.Private Sub btnTab1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnTab1.Click
02. TabControl1.SelectedIndex = 0
03.End Sub
04.
05.Private Sub btnTab2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnTab2.Click
06. TabControl1.SelectedIndex = 1
07.End Sub
08.
09.Private Sub btnTab3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnTab3.Click
10. TabControl1.SelectedIndex = 2
11.End Sub
12.
13.Private Sub btnTab4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnTab4.Click
14. TabControl1.SelectedIndex = 3
15.End Sub

Y eso es todo, solo queda ejecutar, probar e implementar donde quieran. Espero que les sirva.

Al ejecutar se verá mas o menos así:


*************************************************************

Hoy quiero comentarle algunas cositas referentes al trabajo con fechas, esas cosas que uno dice… “Pero eso todo
el mundo lo sabe…”, pero como este sitio no está dedicado a expertos sino a ayudar a quienes se inician en este
mundo de la programación en visual basic .net, me parece mas que apropiado hablar sobre fechas.

Antes de comenzar acá les dejo algunas definiciones que sería bueno conocer:

DateSerial

Devuelve un valor Date que representa un año, mes y día específicos, con la información de la hora establecida en
medianoche (00:00:00).

Datetime.Now

Obtiene un objeto DateTime que se establece en la fecha y hora actual de este equipo, expresada como hora local.

DateAdd

Devuelve un valor de tipo Date que contiene un valor de fecha y hora al que se ha agregado un intervalo de tiempo
especificado.

Bueno, sin más rodeos pasemos a los ejemplos. En esta oportunidad de trata de un formulario con una serie de
botones y cajas de texto que nos van a informar distintas fecha como por ejemplo, el último día del mes actual o el
primer día hábil de un mes, etc. Es muy sencillo y el ejemplo creo que es lo suficientemente claro por lo que no
voy a explicarlo. Simplemente presten atención al código y podrán encontrar respuesta a muchas de las dudas que
se generan al trabajar con fechas.

Este es el formulario que usaremos para el ejemplo:


y el código es el siguiente:

view source

print?
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
02. 'Fecha Actual
03. MsgBox(Now.Date, MsgBoxStyle.OkOnly, "Fecha Actual")
04.End Sub
05.
06.Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
07. 'Fecha y Hora Actual
08. MsgBox(Now(), MsgBoxStyle.OkOnly, "Fecha y Hora Actual")
09.End Sub
10.
11.Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button3.Click
12. 'Primer Día del Mes
13. MsgBox(DateSerial(Now.Year, Now.Month, 1), MsgBoxStyle.OkOnly, "Primer Día del Mes")
14.End Sub
15.
16.Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button4.Click
17. 'Ultimo día del Mes
18. Dim fecha1 As Date = DateAdd(DateInterval.Month, 1, Now.Date)
19. MsgBox(DateAdd(DateInterval.Day, -1, DateSerial(fecha1.Year, fecha1.Month, 1)),
MsgBoxStyle.OkOnly, "Ultimo día del Mes")
20.End Sub
21.
22.Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button5.Click
23. 'Primer Día Hábil
24. Dim primerDiaHabil As Date = DateSerial(Now.Year, Now.Month, 1)
25. Select Case primerDiaHabil.Date.DayOfWeek
26. Case 1 'Domingo
27. primerDiaHabil = DateAdd(DateInterval.Day, 1, primerDiaHabil)
28. Case 6 'Sabado
29. primerDiaHabil = DateAdd(DateInterval.Day, 2, primerDiaHabil)
30. Case Else 'De lunes a Viernes
31. ' no hace nada
32. End Select
33. MsgBox(primerDiaHabil, MsgBoxStyle.OkOnly, "Primer Día Hábil")
34.End Sub
35.
36.Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button6.Click
37. 'Sumar n Dias a Hoy
38. MsgBox(DateAdd(DateInterval.Day, CType(TextBox1.Text, Integer), Now.Date),
MsgBoxStyle.OkOnly, "Sumar n Dias a Hoy")
39.End Sub
40.
41.Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button7.Click
42. 'Sumar n Meses a Hoy
43. MsgBox(DateAdd(DateInterval.Month, CType(TextBox2.Text, Integer), Now.Date),
MsgBoxStyle.OkOnly, "Sumar n Meses a Hoy")
44.End Sub

****************************************************

Quiero en esta oportunidad mostrarle un simple ejemplo de validación de datos ingresados en un datagridview.
Este es un potente control, muy rico, y con muchísimas opciones de configuración.

Esta validación la haremos controlando el evento CellValidating del datagridview.

Para el ejemplo vamos a necesitar: un formulario y un datagridview. como se ve en la siguiente imagen:


En el evento load del formulario seteamos la propiedad Dock para que el control ocupe todo el formulario y
creamos las columnas para el ingreso de los datos.

view source

print?

1.DataGridView1.Dock = DockStyle.Fill

2.

3.DataGridView1.Columns.Add("Nombre", "Nombre")

4.DataGridView1.Columns.Add("Apellido", "Apellido")

5.DataGridView1.Columns.Add("Cargo", "Cargo")

6.DataGridView1.Columns.Add("Categoria", "Categoría")

7.DataGridView1.Columns.Add("Sueldo", "Sueldo")

Ahora veamos la validación.

El evento que manejamos se llama CellValidating y con un select case vamos a validar los datos dependiendo de
que columna es la que se está editando. Esto lo sabemos porque consultamos:

DataGridView1.Columns(e.ColumnIndex).Name

Cuando se ingresa un dato no válido debemos completar la propiedad ErrorTex del row que estamos editando con
un mensaje de error, el cual aparecerá a la izquierda y lo leemos al colocar el puntero del mouse sobre el icono rojo
que aparece.

veamos el codigo:
Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles
DataGridView1.CellValidating

Select Case DataGridView1.Columns(e.ColumnIndex).Name


'El nombre quiero que sea obligatorio, por eso
'no lo dejo salir de la celda hasta que lo ingrese
Case "Nombre"
If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then
DataGridView1.Rows(e.RowIndex).ErrorText = _
"El Nombre no puede estar vacío"
e.Cancel = True
End If

Case "Apellido" 'lo mismo pasa con el apellido, es obligatorio


If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then
DataGridView1.Rows(e.RowIndex).ErrorText = _
"El Apellido no puede estar vacío"
e.Cancel = True
End If
Case "Cargo"
'En el caso del cargo, tengo cuatro opciones o vacío
'Si no concueda con ninguna no puede salir
If e.FormattedValue.ToString() <> "Vendedor" And _
e.FormattedValue.ToString() <> "Encargado" And _
e.FormattedValue.ToString() <> "Supervisor" And _
e.FormattedValue.ToString() <> "Gerente" And _
e.FormattedValue.ToString() <> "" Then
DataGridView1.Rows(e.RowIndex).ErrorText = _
"El dato no es válido: ingrese Vendedor o Encargado o Supervisor o
Gerente"
e.Cancel = True
Else
DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
End If
Case "Categoria"
If e.FormattedValue.ToString() <> "A" And _
e.FormattedValue.ToString() <> "B" And _
e.FormattedValue.ToString() <> "C" And _
e.FormattedValue.ToString() <> "" Then
DataGridView1.Rows(e.RowIndex).ErrorText = _
"Categorias permitidas: A, B o C"
e.Cancel = True
Else
DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
End If
Case "Sueldo"
'se valida que sea un dato numérico
If Not IsNumeric(e.FormattedValue.ToString()) And Not
String.IsNullOrEmpty(e.FormattedValue.ToString()) Then
DataGridView1.Rows(e.RowIndex).ErrorText = _
"Debe ingresar un valor numérico"
e.Cancel = True
Else
DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty
End If
End Select
End Sub
***************************************************************************************************************

Como clonar un formulario windows


Publicado por Eliseo en Controles, Ejemplos, Tutoriales el 09 21st, 2010 | 14 respuestas

Muchas veces puede surgir la necesidad de hacer dos o mas formularios iguales o muy parecidos. Lo primero que
se nos ocurre es ir al explorador de soluciones, seleccionar un formulario y hacer Control-C y Control-V para crear
un nuevo formulario igual al primero, pero… para nuestra sorpresa aparecen unos cuantos errores que nos pueden
hacer doler la cabeza. Para ayudar con este tema les presento un breve tutorial para saber como copiar (a mano)
un formulario windows.

Primero abrimos (para el ejemplo) un nuevo proyecto con un formulario y le agregamos algunos controles y
componentes diseñados como más nos guste… aquí un ejemplo:

Para el ejemplo es más que suficiente.

Luego vamos al explorador de soluciones y abrimos el código del designer. En nuestro caso Form1.designer.vb
En la ventana de código copiamos todo desde la subrutina InitializeComponent() hasta el final de la clase.
Ahora viene lo bueno… agregamos a nuestro proyecto un nuevo formulario y sin hacer nada mas abrimos el
designer del nuevo formulario (en mi caso Form2.designer.vb) y reemplazamos el código, que en la siguiente
imagen aparece seleccionado por el que anteriormente habíamos copiado.

Listo! al guardar y ver en vista de diseño tendremos un segundo formulario igualito al primero.

**************************************************************************************

Solo mayúsculas o minusculas


Es te código nos muestra como validar un texbox que acepte solo números, En Visual Basic .NET

Abra un nuevo proyecto, En Proyectos de Visual Basic seleccione la plantilla Aplicación para Windows.

En la Barra de Herramientas Seleccione Proyecto se le desplegara una lista seleccione Agregar Módulo.

Agregue un Textbox al Formulario y no le cambie el Nombre, Déjelo como textbox1

En el Modulo copie y pegue este código:

'****************************************************************************************
'* Código realizado por Angel Ruiz © (Venezolano) *
'****************************************************************************************
Function SoloNumeros(ByVal Keyascii As Short) As Short
If InStr("1234567890", Chr(Keyascii)) = 0 Then
SoloNumeros = 0
Else
SoloNumeros = Keyascii
End If
Select Case Keyascii
Case 8
SoloNumeros = Keyascii
Case 13
SoloNumeros = Keyascii
End Select
End Function
------------------------------------------------------------------------------------------------
Ahora valla al Formulario y haga doble click sobre el:
Después de la línea:
Inherits System.Windows.Forms.Form

Copie y pegue esta Declaración de Variable


Public KeyAscii As Short

Ahora en el evento KeyPress del textBox1 copie y pegue este código

Dim KeyAscii As Short = CShort(Asc(e.KeyChar))


keyascii = CShort(SoloNumeros(keyascii))
If keyascii = 0 Then
e.Handled = True
End If

Quedaría de la siguiente forma:

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
keyascii = CShort(SoloNumeros(keyascii))
If keyascii = 0 Then
e.Handled = True
End If
End Sub

Ahora ejecute su aplicación presionando F5.


****************************************************

1. Option Explicit On
2. Option Strict On
3. ' Espacio de nombres con clases para el manejo de expresiones regulares en .NET
4. Imports System.Text.RegularExpressions
5.
6. Public Class Form1
7.
8. Private Function validar_Mail(ByVal sMail As String) As Boolean
9. ' retorna true o false
10. Return Regex.IsMatch(sMail, _
11. "^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$")
12. End Function
13.
14. Private Sub Button1_Click(ByVal sender As System.Object, _
15. ByVal e As System.EventArgs) Handles Button1.Click
16.
17. Dim sMail As String
18.
19. sMail = InputBox("Escribir una dirección de email", "validación")
20.
21. If Len(sMail) > 0 Then
22. MsgBox(validar_Mail(sMail), MsgBoxStyle.Information)
23. End If
24. End Sub
25.
26. Private Sub Form1_Load(ByVal sender As System.Object, _
27. ByVal e As System.EventArgs) _
28. Handles MyBase.Load
29.
30. Button1.Text = " Validar mail "
31.
32. End Sub
33. End Class

*****************************************************

Fecha y Hora

Dim aDateString, aTimeString As String


Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)

Validar que solo se ingresen letras en un textbox

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
2. If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then
3. e.Handled = True
4. End If
5.End Sub

El tipo char tiene varias propiedades que nos resultarían muy útiles a la hora de realizar validaciones. En el ejemplo
vemos la propiedad .IsLetter… aca algunas más para recordar:

IsControl: Indica si el caracter unicode especificado se clasifica por categorias como un caracter de Control
IsDigit: Indica si el caracter unicode especificado se clasifica por categorias como un Dígito Decimal

IsNumber: Indica si el caracter unicode especificado se clasifica por categorias como un número

IsLetterOrDigit: Indica si el caracter unicode especificado se clasifica por categorias como un caracter alfabético
o un Dígito Decimal

**************************************************************

Validar para ingresar solo números punto y guion

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


TextBox1.KeyPress
If InStr(1, "0123456789.-" & Chr(8), e.KeyChar) = 0 Then
e.KeyChar = ""
End If
End Sub

****************************************************************

'ESTA FUNCION LA UTILIZO PARA VALIDAR QUE NO SE INGRESE MAS DE UN 'PUNTO

Public Function buscarPunto(ByVal Cadena As Double)


Dim i As Integer
i = InStr(Cadena, ".")
If i = 0 Then Return True Else Return False
End Function

*****************************************************

Dim i As Integer
i = InStr(txtPrecio.Text, ".")
If i = 0 Then
If InStr(1, "0123456789." & Chr(8), e.KeyChar) = 0 Then
e.Handled = True
End If
Else
If InStr(1, "0123456789" & Chr(8), e.KeyChar) = 0 Then
e.Handled = True
End If
End If

*******************************************************

Validar digitación de solo numeros

Public Function EsNumero(KeyAscii As Integer) As Boolean


'Agrego el "." decimal (lo podes cambiar por "," si usas ese...
'Y agrego el Ascii "8" que es la tecla BORRAR
Select Case KeyAscii
Case Asc("0"), Asc("1"), Asc("2"), Asc("3"), Asc("4"), Asc("5"), Asc("6") & _
Asc("7"), Asc("8"), Asc("9"), Asc("."), 8
EsNumero = True
Case Else
EsNumero = False
End Select
End Function

Private Sub Text1_KeyPress(KeyAscii As Integer)


If EsNumero(KeyAscii) = False Then
MsgBox "Este es el mensaje de alerta", vbCritical
KeyAscii = 0 'no escribo el caracter
End If
End Sub

***************************************************************************
Validar correo electrónico
Validar correo electrónico

Normalmente se nos presenta el inconveniente de saber si la dirección de correo electrónico que están escribiendo nuestros
usuarios esta en un formato valido o no, para este fin el proceso a realizar es, la validacion de las partes básicas de un
correo electrónico, tal como una @ un . (Punto) y un dominio consecuente

Para poder lograr esta validacion usaremos una expresión regular, en vb.net

Espacio de nombres:

Imports System.Text.RegularExpressions

Función

Public Function validar_Mail(ByVal sMail As String) As Boolean


' retorna true o false
Return Regex.IsMatch(sMail, _
"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-
9-]+)*(\.[a-z]{2,4})$")
End Function

Llamado a la funcion la cual puede ser desde el evente leave de el textbox deseado

If validar_Mail(LCase(TxtMail.Text)) = False Then


MessageBox.Show("Dirección de correo electronico no valida,
el correo debe tener el formato: nombre@dominio.com, " & _
" por favor seleccione un correo valido", "Validación de
correo electronico", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation)
TxtMail.Focus()
TxtMail.SelectAll()
End If
****************************************************************************************

convierte todo a mayúsculas en durante la ejecución, así:

Private Sub cbfamilia_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbfamilia.Leave


Dim a As String
a = cbfamilia.Text.ToUpper 'convierte a mayúsculas
If cbfamilia.Items.Contains(a).ToString.ToUpper Then 'comparas mayúsculas con mayúsculas
Else
MsgBox("Elija una familia valida")
cbfamilia.Focus()
End If
End Sub

**********************************************************

Saber que tecla se ha pulsado en un textbox y otras cosillas (VB)


Este es el código para Visual Basic .NET

Private Sub txtNumero_KeyPress(ByVal sender As Object, _


ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles txtNumero.KeyPress
' Si se pulsa la tecla Intro, pasar al siguiente
If e.KeyChar = Convert.ToChar(Keys.Return) Then
'If e.KeyChar = ChrW(Keys.Return) Then
e.Handled = True
txtFecha.Focus()
ElseIf e.KeyChar = "."c Then
' si se pulsa en el punto se convertirá en coma
e.Handled = True
SendKeys.Send(",")
End If
End Sub
'
Private Sub txtFecha_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles txtFecha.KeyPress
Select Case e.KeyChar
Case Convert.ToChar(Keys.Return) 'ChrW(Keys.Return)
e.Handled = True
btnAdd.Focus()
Case "."c, ","c, "-"c
' si se pulsa en estos caracteres, se convertirá en /
e.Handled = True
SendKeys.Send("/")
End Select
End Sub
'
Private Sub txtNumero_Enter(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles txtNumero.Enter, txtFecha.Enter
' Al recibir el foco, seleccionarlo todo
CType(sender, TextBox).SelectAll()
End Sub
'
Private Sub ListBox1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles ListBox1.KeyDown
' Si se pulsa en Supr, borrar el elemento seleccionado
If e.KeyCode = Keys.Delete Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
End If
End Sub
'
Private Sub btnAdd_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btnAdd.Click
' Añadir el contenido de las cajas al listbox
ListBox1.Items.Add(txtNumero.Text & ", " & txtFecha.Text)
txtNumero.Focus()
End Sub
'
Private Sub btnCerrar_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btnCerrar.Click
' cerrar el formulario
' (si este es el único formulario, también se cerrará el ejecutable)
Me.Close()
End Sub

*********************************************************************

También podría gustarte