Anda di halaman 1dari 27

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

Hay varias formas de hacerlo es obtener el tamao del contenido de la caja de texto y si este es menor a cero entonces significa que esta vaco: ?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

1Button1.Click If Len(TextBox1.Text) <> 0 Then 2 Else 3 MessageBox.Show("Debes digitar tu nmero de <span class="IL_AD" 4id="IL_AD7">documento</span>") 5 End If End Sub 6
Otra forma puede ser comparndolo como si fuera una simple cadena de texto, a diferencia de la forma anterior que utilizbamos nmeros enteros, ya que la funcin Len() retorna un nmero entero que contiene el nmero de caracteres de una cadena. ?

1If TextBox1.Text <> "" Then Else 2 MessageBox.Show("Debes digitar tu nmero 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 nmero o una fecha o una simple cadena. Para el caso de los nmeros lo podemos comprobar con la funcin IsNumeric() de esta forma: ?

1class="IL_AD" id="IL_AD11">Windows</span>.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Not IsNumeric(e.KeyChar) Then e.Handled = True 2 End Sub 3
Todo desde la propiedad Keypress del Textbox al que queremos aplicarle el filtro. En este caso si no es un nmero 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.
*******************************************************************************

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.<span

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 bsico pero les servir de punto de partida para validar cualquier ingreso. A continuacin el cdigo. 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 cdigo es para que en un textBox podamos ingresar solo nmeros si quieres ingresar solo enteros le pones al momento de utilizar la funcin 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 cdigo haganmela llegar
************************************************************************************

Validar correo electrnico Normalmente se nos presenta el inconveniente de saber si la direccin de correo electrnico que estn escribiendo nuestros usuarios esta en un formato valido o no, para este fin el proceso a realizar es, la validacion de las partes bsicas de un correo electrnico, tal como una @ un . (Punto) y un dominio consecuente Para poder lograr esta validacion usaremos una expresin regular, en vb.net Espacio de nombres: mports System.Text.RegularExpressions Funcin 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-z09-]+)*(\.[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("Direccin de correo electronico no valida, el correo debe tener el formato: nombre@dominio.com, " & _ " por favor seleccione un correo valido", "Validacin de correo electronico", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) TxtMail.Focus() TxtMail.SelectAll() End If

Funcin para validar la entrada de datos numricos por teclado en un formulario de vb.net.

Voy a explicar la rutina que utilizo yo para validar la entrada de datos numricos en un formulario realizado en vb.net. La funcin es la siguiente, creo que no hace falta explicacin, con los comentarios tenemos suficiente informacin. Si hace falta alguna aclaracin, ya sabeis un comentario en el post y ya os responder. La llamada a la funcin se realizar dentro del evento "TextChanged".

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

Mira independientemente de que plataforma usas (Web o Windows forms) los formularios de validacion de usuarios y contraseas siguen los mismos principios Para poder hacer la validacin necesitas pegar TextBox de nombre TextBox de contrasea 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, contrasea. Cuando el usuario presione el botn 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, txtContrasea.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 contrasea) 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 botn o una imagen y nos olvidamos de la cantidad de configuraciones que nos ofrece este simple pero completo control!
(Mi intencin es explotar al mximo el rendimiento de este objeto y eso que he tenido mis dudas hoy sobre que escribir, ya que mi primera intencin 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 mtodo 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 aplicacin 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 sern 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 ratn encima para que se muestre. - ReshowDelay: controla el tiempo que tardara en aparecer un tooltip despus de que se cierre el anterior. Es decir, si se esta mostrando un ToolTip y te sitas encima de otro objeto que tambin posee otro tooltip tardara el tiempo que se estipule en esta propiedad.
* Todas estas propiedades estn en milisegundos.

Si quieres un calculo automtico 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 aplicain!! *************************************************** Combobox

************************************************** EXPRESIONES REGULARES

Ejemplos de expresiones regulares


Correo electrnico URL ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[09]{1,3}\.)|(( [a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[09]{1,3})(\]?)$ ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(09)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$ Por ejemplo name@gmail.com

Contrasea segura (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$

Fecha (EEUU) Fecha (EEUU) Moneda

^\d{1,2}\/\d{1,2}\/\d{2,4}$ ^\d{1,2}\/\d{1,2}\/\d{2,4}$ ^(-)?\d+(\.\d\d)?$

Nmerotarjeta de ^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(crdito ?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$ Nmerotelefono (Francia) Nmerotelefono (Espaa) Nmerotelefono (EEUU) Cdigo postal (Francia) Codigo postal (Italia) Cdigo postal (Alemania ) Cdigo ^0[1-6]{1}(([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[09]{2}){4})$ ^[0-9]{2,3}-? ?[0-9]{6,7}$ ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$ ^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$ ^(V-|I-)?[0-9]{4}$ \b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-249]\d{3})|(?: [6][013-9]\d{3}))\b ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$

Por ejemplo http://www.frogx3.co m Entre 8 y 10 caracteres, por lo menos un digito y un alfanumrico, y no puede contener caracteres espaciales Por ejemplo 01/01/2005 Por ejemplo 01/01/2005 + o cantidad, sin ningn smbolo. Si tiene punto decimal, decimal, requiere 2 caracteres numricos despus del punto decimal Nmero tarjeta de crdito como Amex, Visa, MasterCard, Discover . . . . . .

postal (Espaa) Cdigo ^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zApostal (EEUU) Z]\d)$ Nmeroseguro ^((\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}|)))$ Nmeroseguro ^\d{3}-\d{2}-\d{4}$ social (EEUU) Tarjeta de ^([0-9a-zA-Z]{12})$ identificacin (Francia) Tarjeta de ^([0-9a-zA-Z]{12})$ identificacin (Italia) Nmero pasaporte ^([a-zA-Z]{2})\s([0-9]{7})$ (Francia) IBAN (Alemania) DE\d{2}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{2}|DE\d{20} IBAN (Espaa) 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}[0Identificacin 9]{3} [A-Za-z]{1}$ Fiscal (Italia) Certificado de ^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9AIdentificacin Z]|\d{8}(-|\.)?[A-Z])$ Fiscal (Espaa)
***************************************************
Formatos de fecha

. . . Por ejemplo 001234567000

Por ejemplo AA 1234567

Por ejemplo 123456789 . . .

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 nmeros a letras


He visto muchas veces esta pregunta en los foros, si mal no recuerdo en el ao 2000 alguin que no recuerdo su nombre envo el siguiente algoritmo para VB 6.0 para realizar dicha conversin.... ha sido unos de los mejores que he visto.. a continuacin se los adjunto, espero que tambin 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 cancelacin del mtodo 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 mtodo 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 funcin: 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 ms de una oportunidad tuve la necesidad de seleccionar mediante cdigo que pagina (TabPage) del control debera ser la que se mostrara, la solucin 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 botn debemos ingresar el siguiente codigo view source print?
01.Private Sub btnTab1_Click(ByVal Handles btnTab1.Click 02. TabControl1.SelectedIndex = 03.End Sub 04. 05.Private Sub btnTab2_Click(ByVal Handles btnTab2.Click 06. TabControl1.SelectedIndex = 07.End Sub 08. 09.Private Sub btnTab3_Click(ByVal Handles btnTab3.Click 10. TabControl1.SelectedIndex = 11.End Sub 12. 13.Private Sub btnTab4_Click(ByVal Handles btnTab4.Click 14. TabControl1.SelectedIndex = 15.End Sub sender As System.Object, ByVal e As System.EventArgs) 0

sender As System.Object, ByVal e As System.EventArgs) 1

sender As System.Object, ByVal e As System.EventArgs) 2

sender As System.Object, ByVal e As System.EventArgs) 3

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 programacin en visual basic .net, me parece mas que apropiado hablar sobre fechas. Antes de comenzar ac les dejo algunas definiciones que sera bueno conocer: DateSerial Devuelve un valor Date que representa un ao, mes y da especficos, con la informacin 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 ms 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 da del mes actual o el primer da hbil 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 atencin al cdigo y podrn 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 cdigo 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 Da del Mes 13. MsgBox(DateSerial(Now.Year, Now.Month, 1), MsgBoxStyle.OkOnly, "Primer Da 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 da 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 da 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 Da Hbil 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 Da Hbil") 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 validacin de datos ingresados en un datagridview. Este es un potente control, muy rico, y con muchsimas opciones de configuracin. Esta validacin 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", "Categora") 7.DataGridView1.Columns.Add("Sueldo", "Sueldo")

Ahora veamos la validacin. 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 vlido 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 vaco" 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 vaco" e.Cancel = True End If Case "Cargo" 'En el caso del cargo, tengo cuatro opciones o vaco '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 vlido: 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 numrico If Not IsNumeric(e.FormattedValue.ToString()) And Not String.IsNullOrEmpty(e.FormattedValue.ToString()) Then DataGridView1.Rows(e.RowIndex).ErrorText = _ "Debe ingresar un valor numrico" 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 diseados como ms nos guste aqu un ejemplo:

Para el ejemplo es ms que suficiente. Luego vamos al explorador de soluciones y abrimos el cdigo del designer. En nuestro caso Form1.designer.vb

En la ventana de cdigo 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 cdigo, que en la siguiente imagen aparece seleccionado por el que anteriormente habamos copiado.

Listo! al guardar y ver en vista de diseo tendremos un segundo formulario igualito al primero.
************************************************************************************** Solo maysculas o minusculas

Es te cdigo nos muestra como validar un texbox que acepte solo nmeros, En Visual Basic .NET Abra un nuevo proyecto, En Proyectos de Visual Basic seleccione la plantilla Aplicacin para Windows. En la Barra de Herramientas Seleccione Proyecto se le desplegara una lista seleccione Agregar Mdulo. Agregue un Textbox al Formulario y no le cambie el Nombre, Djelo como textbox1

En el Modulo copie y pegue este cdigo: '**************************************************************************************** '* Cdigo 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: Despus de la lnea: Inherits System.Windows.Forms.Form Copie y pegue esta Declaracin de Variable Public KeyAscii As Short Ahora en el evento KeyPress del textBox1 copie y pegue este cdigo Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) keyascii = CShort(SoloNumeros(keyascii)) If keyascii = 0 Then e.Handled = True End If Quedara 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 aplicacin 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 direccin de email", "validacin") 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 resultaran muy tiles a la hora de realizar validaciones. En el ejemplo vemos la propiedad .IsLetter aca algunas ms 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 Dgito Decimal IsNumber: Indica si el caracter unicode especificado se clasifica por categorias como un nmero IsLetterOrDigit: Indica si el caracter unicode especificado se clasifica por categorias como un caracter alfabtico o un Dgito Decimal
************************************************************** Validar para ingresar solo nmeros 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 digitacin 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 electrnico


Validar correo electrnico

Normalmente se nos presenta el inconveniente de saber si la direccin de correo electrnico que estn escribiendo nuestros usuarios esta en un formato valido o no, para este fin el proceso a realizar es, la validacion de las partes bsicas de un correo electrnico, tal como una @ un . (Punto) y un dominio consecuente Para poder lograr esta validacion usaremos una expresin regular, en vb.net

Espacio de nombres:

Imports System.Text.RegularExpressions

Funcin

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-z09-]+)*(\.[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("Direccin de correo electronico no valida, el correo debe tener el formato: nombre@dominio.com, " & _ " por favor seleccione un correo valido", "Validacin de correo electronico", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) TxtMail.Focus() TxtMail.SelectAll() End If

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

convierte todo a maysculas en durante la ejecucin, 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 maysculas If cbfamilia.Items.Contains(a).ToString.ToUpper Then 'comparas maysculas con maysculas 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 cdigo 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 ' Aadir 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, tambin se cerrar el ejecutable) Me.Close() End Sub

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

Anda mungkin juga menyukai