53
Desarrollando Aplicaciones Windows con Visual Basic . Net Autor: Renato I. Haddad (Microsoft Most Valuable Professional) Desarrollando Aplicaciones Windows con Visual Basic .Net Guía de Referencia Nombre del Proyecto: WinAppLatam Pagina: 1

Guia para iniciarse en Visual Studio .Net

Embed Size (px)

DESCRIPTION

Para todos aquellos q quieren aprender a desarrollar con Visaul Studio .Net esta guia es muy útil

Citation preview

Page 1: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Desarrollando Aplicaciones Windows con Visual Basic .Net

Guía de Referencia

Nombre del Proyecto: WinAppLatam

Pagina: 1

Page 2: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Cómo crear un nuevo formulario? Abra el Solution Explorer; Haga click en el botón derecho sobre WinAppLatam; Seleccione Add / Add Windows Form; Digite el respectivo Nombre del formulario y haga click en el botón Open.

FORMULARIOS

Controls (1)

Nombre del formulario: frmRestaurantePropiedadesText: Arme su plato preferido !!!StartPosition: CenterScreen

Controls y propiedadesLabel1 (Text): Plato:TextBox: txtNombrePlato

Label2 (Text): Ingredientes:ListBox: lstIngredientes

Button1 (ID): btnAnadirText: Añadir >>

Button2 (ID): btnExcluirText: Excluir <<

Button3 (ID): btnNuevoText: Nuevo Plato

Button4 (ID): btnEspecialText: Especial

Label3 (Text): Plato:ListBox: lstPlato

GroupBox (Name): gpLocalText: Local2 RadioButtons

GroupBox (Name): gpEnvase

Pagina: 2

Page 3: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Text: Envase3 CheckBox

GroupBox (Name): gpBebidasText: Bebidas4 CheckBox

Button5 (ID): btnFinalizarText: Finalizar el Armado del Plato

Códigos

Public Sub New()MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

'Arma un ArrayList de Ingredientes Dim ArrayIng As New ArrayList With ArrayIng .Add("Ajo") .Add("Aceite") .Add("Bróculi") .Add("Espagueti") .Add("Sal") .Add("Queso parmesano rallado") .Add("Salsa Blanca") .Add("Salsa Boloñesa") .Add("Funghi") .Sort() End With With Me.lstIngredientes .DataSource = ArrayIng .SelectedIndex = 0 End With Me.gpEnvase.Enabled = FalseEnd Sub

Private Sub btnAnadir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnadir.Click ' Anadir un ingrediente If Me.lstPlato.FindString(Me.lstIngredientes.SelectedItem) = -1 Then Me.lstPlato.Items.Add(Me.lstIngredientes.SelectedItem) End IfEnd Sub

Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click ' Exclui un ingrediente If Me.lstIngredientes.SelectedIndex >= 0 Then Me.lstPlato.Items.RemoveAt(Me.lstPlato.SelectedIndex)

Pagina: 3

Page 4: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

End IfEnd Sub

Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click ' Crea un plato nuevo If MessageBox.Show("¿Desea armar un plato nuevo?", "MS Food", _ MessageBoxButtons.YesNo) = DialogResult.Yes Then Me.lstPlato.Items.Clear() Me.txtNombrePlato.Text = "" End IfEnd Sub

Private Sub btnEspecial_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEspecial.Click ' Inclui un ingrediente especial Dim ing As String = InputBox("Digite el ingrediente especial", "MS Food") If ing.Length > 0 Then Me.lstPlato.Items.Add(ing.Trim) End IfEnd Sub

Private Sub btnFinalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFinalizar.Click If Me.txtNombrePlato.Text.Trim = "" Then MessageBox.Show("Por favor, digite el nombre del plato", "MS Food", MessageBoxButtons.OK) Me.txtNombrePlato.Focus() Exit Sub Else MessageBox.Show("Buen Apetito !!!", "MS Food") End IfEnd Sub

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If Me.RadioButton1.Checked = True Then Me.gpEnvase.Enabled = False Else Me.gpEnvase.Enabled = True End IfEnd Sub

Pagina: 4

Page 5: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Controls (2)

Nombre del formulario: FormMenuPropiedadesText: FormMenu

Controls y propiedadesMainMenu: armar el menú con las opciones:Archivo: Leer archivo texto / SalirConfigurar: Fuentes / Colores / StatusBar

TabControl1: haga click en la propiedade TabPages y en la ventana TabPage Collection Editor, adicione 2 páginas Softwares / Hardwares en la propiedade Text.En la página Softwares:Label1 (ID): lblCuadrosText: Cuadros de Diálogo

ListBox (ID): lstSoftwares

Button1 (ID): btnColoresText: Colores

Button2 (ID): btnFuenteText: Fuente

En la pagina Hardwares:

TextBox1 (ID): txtArchivoMultiline: TrueScrollBars: Both

Button3 (ID): btnArchivoText: Leer archivo texto

StatusBar (Name): myStatus

Códigos

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

'Define el Array softwares

Pagina: 5

Page 6: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Dim softwares() As String = {"Word", "Excel", "Access", "Power Point", _ "VS.NET", "Visio"} Me.lstSoftwares.DataSource = softwaresEnd Sub

Private Sub btnColores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColores.Click CambioColor()End Sub

Sub CambioColor() Dim color As New ColorDialog Me.myStatus.Text = "Define el color de la letra" If color.ShowDialog = DialogResult.OK Then lblCuadros.ForeColor = color.Color Me.lstSoftwares.ForeColor = color.Color End IfEnd Sub

Private Sub btnFuente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFuente.Click CambioFuente()End Sub

Sub CambioFuente() Dim fuente As New FontDialog Me.myStatus.Text = "Configura la fuente de la letra" If fuente.ShowDialog = DialogResult.OK Then Me.lblCuadros.Font = fuente.Font Me.lstSoftwares.Font = fuente.Font End IfEnd Sub

Private Sub btnArchivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnArchivo.Click LeerArchivo()End Sub

Sub LeerArchivo() Dim file As New OpenFileDialog Me.myStatus.Text = "Seleccione cualquier archivo texto" With file .DefaultExt = "*.txt" .Multiselect = False .Filter = "Text files (*.txt)|*.txt" .Title = "Seleccione un archivo..." .ShowDialog() End With If file.ShowDialog = DialogResult.OK Then Dim archivo As New System.IO.StreamReader(file.FileName) Me.txtArchivo.Text = archivo.ReadToEnd archivo.Close() End IfEnd Sub

Pagina: 6

Page 7: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Private Sub mnLeer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnLeer.Click LeerArchivo()End Sub

Private Sub mnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnSalir.Click Me.Close()End Sub

Private Sub mnFuente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnFuente.Click CambioFuente()End Sub

Private Sub mnColores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnColores.Click CambioColor()End Sub

Private Sub mnStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnStatus.Click Dim blnStatus As Boolean = Not Me.mnStatus.Checked Me.mnStatus.Checked = blnStatus Me.myStatus.Visible = blnStatusEnd Sub

Private Sub HandleSelect(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles mnColores.Select, mnFuente.Select, mnLeer.Select, mnSalir.Select, mnStatus.Select Dim msg As String If sender Is mnColores Then msg = "Define el color de la letra" ElseIf sender Is mnFuente Then msg = "Configura la fuente de la letra" ElseIf sender Is mnLeer Then msg = "Leer archivo texto" ElseIf sender Is mnSalir Then msg = "Cierra el formulario" ElseIf sender Is mnStatus Then msg = "Exhibe la barra de Status" Else msg = String.Empty End If Me.myStatus.Text = msgEnd Sub

Pagina: 7

Page 8: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Gráficos (GDI+)

Nombre del formulario: GDIPropiedadesText: GDI

Controls y propiedades

Button1 (ID): Button1Text: Elipse

Button2 (ID): Button2Text: Drawing

TrackBar1Maximum: 100Minimum: 10Value: 10

Códigos

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim dibujo As New Drawing2D.GraphicsPath Dim diametro As Integer = Me.ClientSize.Height Dim ancho As Integer = 80 dibujo.AddEllipse(0, 0, diametro, diametro) dibujo.AddEllipse(ancho, ancho, diametro - (ancho * 2), diametro - (ancho * 2)) Me.Region = New Region(dibujo)End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim dibujo As New Drawing2D.GraphicsPath dibujo.AddString("VB.NET", Me.Font.FontFamily, Font.Bold, 80, New Point(10, 0), StringFormat.GenericDefault) Me.Region = New Region(dibujo)End Sub

Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll Me.Opacity = Me.TrackBar1.Value / 100 Me.Refresh() System.Threading.Thread.CurrentThread.Sleep(5)End Sub

Private Sub GDI_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim rectangulo As New Rectangle(New Point(0, 0), Me.ClientSize) Dim linear As New Drawing2D.LinearGradientBrush(rectangulo, Color.Black, _

Pagina: 8

Page 9: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Color.White, Drawing2D.LinearGradientMode.Vertical) e.Graphics.FillRectangle(linear, rectangulo)End Sub

Pagina: 9

Page 10: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Herencia de formulario

Nombre del formulario: BaseHerenciaPropiedadesText: Calcula Impuesto a la Renta

Controls y propiedades

Label1 (Text): Nombre:TextBox (ID): txtNombreLabel2 (Text): Salario:TextBox (ID): txtSalario

Button1 (ID): btnNombreText: Verifica Nombre

Button2 (ID): btnIRText: Calcula Impuesto a la Renta

Label3 (ID): lblResultadoText: 0

Códigos

Private Sub btnNombre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNombre.Click Dim varNombre As String = Me.txtNombre.Text.Trim If varNombre <> "" Then lblResultado.Text = varNombre.ToUpper Else MessageBox.Show("Por favor, digite el nombre", "Microsoft", MessageBoxButtons.OK) Me.txtNombre.Focus() End IfEnd Sub

Private Sub btnIR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIR.Click Dim varSal As Double = Double.Parse(Me.txtSalario.Text) If varSal >= 0 Then lblResultado.Text = "Impuesto a la Renta: " & FormatNumber(CalculaIR(varSal), 2) Else MessageBox.Show("Digite el salario", "Microsoft", MessageBoxButtons.OK) End IfEnd Sub

Function CalculaIR(ByVal salario As Double) As Double 'Calcula el Impuesto a la Renta, según el salario Select Case salario

Pagina: 10

Page 11: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Case Is < 900 CalculaIR = 0 Case 901 To 1800 CalculaIR = (salario * 0.15) - 135 Case Is > 1800 CalculaIR = (salario * 0.275) - 360 End SelectEnd Function

Private Sub BaseHerencia_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.txtNombre.Focus() Me.txtNombre.SelectAll()End Sub

Private Sub BaseHerencia_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing If MessageBox.Show("¿Desea cerrar?", "Microsoft", MessageBoxButtons.YesNo) = DialogResult.No Then e.Cancel() = True End IfEnd Sub

Nombre del formulario: FormHereda1

Public Class FormHereda1 Inherits WinAppLatam.BaseHerenciaEnd Class

Nombre del formulario: FormHereda2Adicione nuevo formulario y seleccione Add / Add Inherited Form. En la ventana de los formularios existentes, seleccione el BaseHerencia. Adicione otros controls en el formulario.

Controls y propiedades

Label3 (Text): Horas Extras:TextBox (ID): txtHELabel4 (Text): Ingreso Extra:TextBox (ID): txtExtra

Button1 (ID): btnNuevoImpuestoText: Calcula IR con extras

Label5 (ID): lblNuevoImpuesto

Códigos

Pagina: 11

Page 12: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Private Sub btnNuevoImpuesto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevoImpuesto.Click Dim valorTotal As Double valorTotal = Double.Parse(Me.txtSalario.Text) + Double.Parse(Me.txtHE.Text) + Double.Parse(Me.txtExtra.Text) Me.lblNuevoImpuesto.Text = "IR recalculado: " & FormatNumber(CalculaIR(valorTotal), 2)End Sub

Pagina: 12

Page 13: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

MDI / Modal

Nombre del formulario: FormMDI_padrePropiedadesText: FormMDI_padreIsMdiContainer: True

Controls y propiedades

Button2 (ID): btnAbreText: Abre MDI Forms

1 GroupBox com 3 checkBoxText: LayoutText dos checkboxes: Cascate / Horizontal / Vertical

Button1 (ID): Button1Text: Abre Formulario Modal

Códigos

Private Sub btnAbre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbre.Click Dim hijo1 As New FormMDI_Hijo1 hijo1.MdiParent = Me hijo1.Show()

Dim hijo2 As New FormMDI_Hijo2 hijo2.MdiParent = Me hijo2.Show()End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim formModal As New FormModal formModal.ShowDialog() Select Case formModal.DialogResult Case DialogResult.Yes MessageBox.Show("Usted pulsó SI", "MS Forms") Case DialogResult.No MessageBox.Show("Usted pulsó NO", "MS Forms") Case DialogResult.Cancel MessageBox.Show("Usted cerró el formulario", "MS Forms") End SelectEnd Sub

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Me.LayoutMdi(MdiLayout.Cascade)End Sub

Pagina: 13

Page 14: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged Me.LayoutMdi(MdiLayout.TileHorizontal)End Sub

Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged Me.LayoutMdi(MdiLayout.TileVertical)End Sub

Otros formularios:

Nombre del formulario: FormMDI_Hijo1PropiedadesText: FormMDI_Hijo1AcceptButton: btnOKCancelButton: btnCancel

Controls y propiedades

Label1 (Text): Suscripción MSDN:TextBox1Button1 (Text): Suscripción:Button2 (ID): btnOKButton3 (ID): btnCancel

Códigos

Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click MessageBox.Show("Usted pulsó ENTER", "MS Forms")End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click Me.Close()End Sub

Nombre del formulario: FormMDI_Hijo2PropiedadesText: FormMDI_Hijo2

Controls y propiedades

Label1 e DataGrid

Pagina: 14

Page 15: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Tratamiento de Errores

Try / Catch / Finally

Nombre del formulario: FormError

Controls y propiedadesButton1 (ID): btnArchivoText: Abre el archivo texto

TextBox: txtArchivoScrollBars: Both

Códigos

Imports System.IO

Private Sub btnArchivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnArchivo.Click Try 'Bloque pasible de error Dim archivo As New StreamReader("c:\MSDNLatam.txt") Me.txtArchivo.Text = archivo.ReadToEnd() archivo.Close() Catch err As FileNotFoundException 'Tratamiento de error MessageBox.Show("Archivo inexistente", "MS Error") Catch err As DirectoryNotFoundException MessageBox.Show("Directorio inexistente", "MS Error") Catch err As Exception MessageBox.Show(err.Message, "MS Error") End Try

'Try ' 'bloque de código 'Catch ex As Exception ' 'trata el erro 'Finally ' 'siempre será ejecutado con o sin error ' 'Open/Close Database 'End TryEnd Sub

Pagina: 15

Page 16: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

ADO .NET

Llenando Controls

Nombre del formulario: DB_LlenandoControlsStartPosition: CenterScreen

Controls y propiedadesLabel1 (Text): ID:TextBox1 (ID): txtIDLabel2 (Text): ID:TextBox2 (ID): txtNombreLabel3 (Text): ID:TextBox3 (ID): txtContactoLabel4 (Text): ID:TextBox4 (ID): txtCargoLabel5 (Text): Ciudad:TextBox1 (ID): txtCiudad

Button1 (ID): btnTopText: <<

Button2 (ID): btnPreviousText: <

TextBox6 (ID): txtNavegador

Button3 (ID): btnNextText: >

Button4 (ID): btnBottomText: >>

Para generar el DataSet, siga estos pasos:

Abra el Server Explorer con el banco de datos Northwind; Seleccione la tabla Customers y arrástelo al documento; Renombre el SqlDataAdapter1 para daCustomer; Haga click con el botón derecho sobre el daCustomer y seleccione Generate

DataSet; Digite dsCustomer y el VS.NET genera automáticamente el DsCustomer1.

Códigos

Pagina: 16

Page 17: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

Me.daCustomers.Fill(Me.DsCustomers1) ActualizaDatos()End Sub

Sub ActualizaDatos() With Me.DsCustomers1.Customers.Rows(Me.BindingContext(Me.DsCustomers1, "Customers").Position) Me.txtID.Text = .Item("CustomerID") Me.txtNombre.Text = .Item("CompanyName") Me.txtContacto.Text = .Item("ContactName") Me.txtCargo.Text = .Item("ContactTitle") Me.txtCiudad.Text = .Item("City") End With Me.txtNavegador.Text = "Proveedor " & (Me.BindingContext(Me.DsCustomers1, "Customers").Position + 1).ToString & _ " de " & Me.BindingContext(Me.DsCustomers1, "Customers").Count.ToStringEnd Sub

Private Sub btnTop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTop.Click Me.BindingContext(Me.DsCustomers1, "Customers").Position = 0 ActualizaDatos()End Sub

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click With Me.BindingContext(Me.DsCustomers1, "Customers") If .Position = 0 Then Beep() Else .Position -= 1 ActualizaDatos() End If End WithEnd Sub

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click Me.BindingContext(Me.DsCustomers1).Position += 1 With Me.BindingContext(Me.DsCustomers1, "Customers") If .Position = .Count - 1 Then Beep() Else .Position += 1

Pagina: 17

Page 18: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

ActualizaDatos() End If End WithEnd Sub

Private Sub btnBottom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBottom.Click With Me.BindingContext(Me.DsCustomers1, "Customers") .Position = .Count - 1 ActualizaDatos() End WithEnd Sub

Pagina: 18

Page 19: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Relacionamientos

Nombre del formulario: DB_RelacionamientosStartPosition: CenterScreen

Controls y propiedadesButton1 (ID): btnConText: DataGrid Con Relacionamiento

Button2 (ID): btnSinText: DataGrid Sin Relacionamiento

DataGrid (ID): dgDatos

Para armar los Adapters, siga estos pasos:

Exhiba la Toolbox / guía Data y arraste el SqlDataAdapter hasta el documento; Siga el asistente hasta localizar la tabla Categories del banco de datos Northwind; Seleccione los campos necesarios para listar las categorías; Continúe con el asistente hasta terminar sus orientaciones; Repita el procedimiento para la tabla de Productos.

Códigos

Private Sub btnCon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCon.Click Me.Text = "DataGrid Con Relacionamiento" Try Dim dsGrid As New DataSet Me.SqlConnection1.Open() Me.daCategorias.Fill(dsGrid, "categorias") Me.daProductos.Fill(dsGrid, "productos") Me.SqlConnection1.Close() ' arma el relacionamiento dsGrid.Relations.Add("ExhibeProductos", dsGrid.Tables("categorias").Columns("CategoryID"), dsGrid.Tables("productos").Columns("CategoryID"))

' arma el DataGrid Me.dgDatos.DataSource = dsGrid Me.dgDatos.DataMember = "categorias" Catch err As Exception MessageBox.Show(err.Message) End TryEnd Sub

Private Sub btnSin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSin.Click Me.Text = "DataGrid Sin Relacionamiento" Try Dim dsGrid As New DataSet

Pagina: 19

Page 20: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Me.SqlConnection1.Open() Me.daCategorias.Fill(dsGrid, "categorias") Me.daProductos.Fill(dsGrid, "productos") Me.SqlConnection1.Close()

' arma el DataGrid Me.dgDatos.DataSource = dsGrid Me.dgDatos.DataMember = "categorias" Catch err As Exception MessageBox.Show(err.Message) End TryEnd Sub

Pagina: 20

Page 21: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Filtros y Clasificación

Nombre del formulario: FormFilterSortStartPosition: CenterScreenText: Aplica Filtro y Clasifica datos en el DataView

Controls y propiedadesGroupBox1 (Text): FiltrosLabel1 (Text): ProductoTextBox1 (ID): txtProductoLabel2 (Text): CategoriasComboBox (ID): cboCategoriascheckBox1 (ID): ckDescontinuado / Text: Descontinuado

Button1 (ID): btnProductoText: Filtrar

Button2 (ID): btnCategoriaText: Filtrar

Button3 (ID): btnRemoverText: Remover

GroupBox2 (Text): ClasificaciónListBox1 (Text): lstCategoriasButton4 (ID): btnCrecienteText: Creciente

Button5 (ID): btnDecrecienteText: Decreciente

DataGrid1 (ID): dgDatos

Códigos

Imports System.Data.SqlClientPublic Class FormFilterSort Inherits System.Windows.Forms.Form

Protected Const conexion As String = _ "Server=Wind;" & _ "DataBase=Northwind;" & _ "User ID=sa;Password="

Dim DataViewProductos As DataView

Private Sub FormFilterSort_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ArmaCategorias()

Pagina: 21

Page 22: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

ArmaProductos() Me.myStatusBar.Text = String.Empty End Sub

Sub ArmaCategorias() Try Dim conn As New SqlConnection(conexion) Dim sql As String = "Select CategoryID, CategoryName From Categories" Dim dsCategorias As New DataSet Dim AdapterCategorias As New SqlDataAdapter(sql, conn) conn.Open() AdapterCategorias.Fill(dsCategorias, "Categorias") With Me.cboCategorias .DataSource = dsCategorias.Tables("Categorias").DefaultView .DisplayMember = "CategoryName" .ValueMember = "CategoryID" End With conn.Close() Catch err As SqlException MessageBox.Show(err.Message) Catch err As Exception MessageBox.Show(err.Message) End Try End Sub

Sub ArmaProductos() Dim conn As New SqlConnection(conexion) Dim sql As String = "Select ProductName, UnitPrice, UnitsInStock, UnitsOnOrder, " & _ "CategoryID, Discontinued FROM Products" Dim dsProductos As New DataSet Dim AdapterProductos As New SqlDataAdapter(sql, conn) conn.Open() AdapterProductos.Fill(dsProductos, "Productos") DataViewProductos = New DataView(dsProductos.Tables("Productos"), "ProductName like '%'", "ProductName ASC", DataViewRowState.OriginalRows) conn.Close() Me.dgDatos.DataSource = DataViewProductos Me.dgDatos.CaptionText = "Cantidad Productos: " + DataViewProductos.Count.ToString ' Listado del Productos Dim columna As Integer For columna = 0 To dsProductos.Tables("Productos").Columns.Count - 1 Me.lstCategorias.Items.Add(dsProductos.Tables("Productos").Columns(columna).ColumnName) Next Me.lstCategorias.Sorted = True End Sub

Private Sub btnProducto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProducto.Click Dim strFiltro As String

Pagina: 22

Page 23: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

If Me.txtProducto.Text.Trim <> "" Then strFiltro = "ProductName LIKE '" & Me.txtProducto.Text.Trim & "%'" FiltraProductos(strFiltro) End If End Sub

Sub FiltraProductos(ByVal strFiltro As String) DataViewProductos.RowFilter = strFiltro Me.dgDatos.DataSource = DataViewProductos If DataViewProductos.Count <= 0 Then Me.dgDatos.CaptionText = "No existen productos con este filtro" Else Me.dgDatos.CaptionText = "Productos filtrados: " + DataViewProductos.Count.ToString End If Me.myStatusBar.Text = strFiltro End Sub

Private Sub btnCategoria_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCategoria.Click Dim strFiltro As String = "CategoryID=" & Me.cboCategorias.SelectedValue FiltraProductos(strFiltro) End Sub

Private Sub ckDescontinuado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ckDescontinuado.CheckedChanged Dim strFiltro As String If Me.ckDescontinuado.Checked Then strFiltro = "Discontinued=True" Else strFiltro = "Discontinued=False" End If FiltraProductos(strFiltro) End Sub

Private Sub btnCreciente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreciente.Click If Me.lstCategorias.SelectedIndex >= 0 Then DataViewProductos.Sort = Me.lstCategorias.SelectedItem & " ASC" Me.dgDatos.DataSource = DataViewProductos Me.myStatusBar.Text = "Clasificado por " & Me.lstCategorias.SelectedItem & " ASC" End If End Sub

Private Sub btnDecreciente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecreciente.Click If Me.lstCategorias.SelectedIndex >= 0 Then DataViewProductos.Sort = Me.lstCategorias.SelectedItem & " DESC" Me.dgDatos.DataSource = DataViewProductos

Pagina: 23

Page 24: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Me.myStatusBar.Text = "Clasificado por " & Me.lstCategorias.SelectedItem & " DESC" End If End Sub

Private Sub btnRemover_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemover.Click Dim strFiltro As String = "ProductName LIKE '%'" FiltraProductos(strFiltro) End SubEnd Class

Pagina: 24

Page 25: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Entrada Datos

Nombre del formulario: FormEntradaDatosStartPosition: CenterScreenText: Registro de Clientes

Controls y propiedadesGroupBox1 (Text): Datos de RegistroLabel1 (Text): EmpresaIDTextBox1 (ID): txtEmpresaIDLabel2 (Text): EmpresaTextBox2 (ID): txtEmpresaLabel3 (Text): ContactoTextBox3 (ID): txtContactoLabel4 (Text): DirecciónTextBox4 (ID): txtDireccionLabel5 (Text): CiudadTextBox5 (ID): txtCiudadLabel6 (Text): PaísComboBox1 (ID): cboPaisLabel7 (Text): TeléfonoTextBox6 (ID): txtTelefonoLabel8 (Text): FAXTextBox7 (ID): txtFaxButton1 (ID): btnIncluir / Text: IncluirButton2 (ID): btnSalvar / Text: SalvarButton3 (ID): btnExcluir / Text: ExcluirGroupBox2 (Text): Investigación RápidaListBox1 (ID): lstCustomers

Crea un archivo Class Library llamado clsCustomers en la carpeta BancoDatos.

clsCustomers.DLL

Imports System.Data.SqlClientPublic Class clsCustomers

Public Function ArmaClientes(ByVal conexion As String) As DataSet Try Dim conn As New SqlConnection(conexion) Dim sql As String = "Select CustomerID, CompanyName FROM Customers ORDER BY CompanyName" Dim dsCustomers As New DataSet Dim daCustomers As New SqlDataAdapter(sql, conn) conn.Open() daCustomers.Fill(dsCustomers, "Clientes") conn.Close() Return dsCustomers Catch err As SqlException

Pagina: 25

Page 26: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Throw err Catch err As Exception Throw err End Try End Function Public Function ArmaPaises(ByVal conexion As String) As DataSet Try Dim conn As New SqlConnection(conexion) Dim sql As String = "Select Distinct Country FROM Customers ORDER BY Country" Dim dsPaises As New DataSet Dim daPaises As New SqlDataAdapter(sql, conn) conn.Open() daPaises.Fill(dsPaises, "Paises") conn.Close() Return dsPaises Catch err As SqlException Throw err Catch err As Exception Throw err End Try End Function

Public Sub Incluir(ByVal EmpresaID As String, ByVal Empresa As String, ByVal Contacto As String, _ ByVal Direccion As String, ByVal Ciudad As String, ByVal Telefono As String, _ ByVal Fax As String, ByVal Pais As String, ByVal conexion As String) Try Dim conn As New SqlConnection(conexion) Dim cmd As SqlCommand Dim sqlBuilder As New System.Text.StringBuilder With sqlBuilder .Append("INSERT INTO Customers ") .Append("(CustomerID, CompanyName, ContactName, Address, ") .Append("City, Phone, Fax, Country) ") .Append(" VALUES ('") .Append(EmpresaID & "','") .Append(Empresa & "','") .Append(Contacto & "','") .Append(Direccion & "','") .Append(Ciudad & "','") .Append(Telefono & "','") .Append(Fax & "','") .Append(Pais & "')") End With conn = New SqlConnection(conexion) conn.Open() cmd = New SqlCommand(sqlBuilder.ToString, conn) cmd.ExecuteNonQuery() conn.Close() cmd.Dispose() conn.Dispose() Catch err As SqlException Throw err Catch err As Exception

Pagina: 26

Page 27: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Throw err End Try End Sub

Public Sub Actualizar(ByVal EmpresaID As String, ByVal Empresa As String, ByVal Contacto As String, _ ByVal Direccion As String, ByVal Ciudad As String, ByVal Telefono As String, _ ByVal Fax As String, ByVal Pais As String, ByVal conexion As String) Try Dim conn As New SqlConnection(conexion) Dim cmd As SqlCommand Dim sqlBuilder As New System.Text.StringBuilder With sqlBuilder .Append("UPDATE Customers SET ") .Append("CompanyName='" & Empresa & "', ") .Append("ContactName='" & Contacto & "', ") .Append("Address='" & Direccion & "', ") .Append("City='" & Ciudad & "', ") .Append("Country='" & Pais & "', ") .Append("Phone='" & Telefono & "', ") .Append("Fax='" & Fax & "' ") .Append("Where CustomerID='" & EmpresaID & "'") End With conn = New SqlConnection(conexion) conn.Open() cmd = New SqlCommand(sqlBuilder.ToString, conn) cmd.ExecuteNonQuery() conn.Close() cmd.Dispose() conn.Dispose() Catch err As SqlException Throw err Catch err As Exception Throw err End Try End Sub

Public Sub Excluir(ByVal EmpresaID As String, ByVal conexion As String) Try Dim conn As New SqlConnection(conexion) Dim cmd As SqlCommand Dim sql As String = "DELETE FROM Customers Where CustomerID='" & EmpresaID & "'" conn = New SqlConnection(conexion) conn.Open() cmd = New SqlCommand(sql, conn) cmd.ExecuteNonQuery() conn.Close() cmd.Dispose() conn.Dispose() Catch err As SqlException Throw err Catch err As Exception Throw err End Try

Pagina: 27

Page 28: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

End SubEnd Class

Códigos del formulario

Imports System.Data.SqlClient

Public Class FormEntradaDatos Inherits System.Windows.Forms.Form

Protected Const conexion As String = _ "Server=Wind;" & _ "DataBase=Northwind;" & _ "User ID=sa;Password="

Private Mode As String = "Actualizar"

Private Sub FormEntradaDatos_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ArmaClientes() ArmaPaises() End Sub

Private Sub ArmaClientes() Dim clientes As New clsCustomers With Me.lstCustomers .DisplayMember = "CompanyName" .ValueMember = "CustomerID" .DataSource = clientes.ArmaClientes(conexion).Tables("Clientes").DefaultView .SelectedIndex = 0 End With End Sub

Private Sub ArmaPaises() Dim paises As New clsCustomers With Me.cboPais .DisplayMember = "Country" .ValueMember = "Country" .DataSource = paises.ArmaPaises(conexion).Tables("Paises").DefaultView .SelectedIndex = -1 End With End Sub

Private Sub lstCustomers_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstCustomers.SelectedIndexChanged If Me.lstCustomers.SelectedIndex >= 0 Then LlenaForm(Me.lstCustomers.SelectedValue) btnExcluir.Enabled = True btnIncluir.Enabled = True btnSalvar.Enabled = True Mode = "Actualizar" End If End Sub

Pagina: 28

Page 29: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Sub LlenaForm(ByVal idCliente As String) Try Dim conn As New SqlConnection(conexion) Dim sql As String = "Select * FROM Customers Where CustomerID='" & idCliente & "'" Dim dsCustomers As New DataSet Dim drCustomer As SqlDataReader Dim cmd As SqlCommand Dim idPais As String cmd = New SqlCommand(sql, conn) conn.Open() drCustomer = cmd.ExecuteReader If drCustomer.Read() Then Me.txtEmpresaID.Text = drCustomer.Item("CustomerID").ToString Me.txtEmpresa.Text = drCustomer.Item("CompanyName").ToString Me.txtContacto.Text = drCustomer.Item("ContactName").ToString Me.txtDireccion.Text = drCustomer.Item("Address").ToString Me.txtCiudad.Text = drCustomer.Item("City").ToString Me.txtTelefono.Text = drCustomer.Item("Phone").ToString Me.txtFax.Text = drCustomer.Item("Fax").ToString idPais = drCustomer.Item("Country").ToString VerificaPais(drCustomer.Item("Country").ToString) End If drCustomer.Close() conn.Close() cmd.Dispose() conn.Dispose() Catch err As SqlException MessageBox.Show(err.Message) Catch err As Exception MessageBox.Show(err.Message) End Try End Sub Sub VerificaPais(ByVal idPais As String) Dim contador As Integer = 0 Dim paises As New clsCustomers ArmaPaises() For contador = 0 To Me.cboPais.Items.Count - 1 If idPais = Me.cboPais.Items(contador).row(0).ToString Then Me.cboPais.SelectedIndex = contador Exit For End If Next End Sub

Private Sub btnIncluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluir.Click LimpiarCampos() Mode = "Incluir" btnExcluir.Enabled = False btnIncluir.Enabled = False btnSalvar.Enabled = True End Sub

Pagina: 29

Page 30: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Sub LimpiarCampos() Me.txtEmpresaID.Text = "" Me.txtEmpresa.Text = "" Me.txtContacto.Text = "" Me.txtDireccion.Text = "" Me.txtCiudad.Text = "" Me.txtTelefono.Text = "" Me.txtFax.Text = "" Me.cboPais.SelectedIndex = -1 End Sub

Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click If Mode = "Incluir" Then IncluirCliente() Else ActualizarCliente() End If End Sub

Sub IncluirCliente() If Not ValidaDatos() Then Exit Sub End If Try Dim objIncluir As New clsCustomers Dim empresaID As String = Me.txtEmpresaID.Text.Trim Dim empresa As String = Me.txtEmpresa.Text.Trim Dim contacto As String = Me.txtContacto.Text.Trim Dim telefono As String = Me.txtTelefono.Text.Trim Dim direccion As String = Me.txtDireccion.Text.Trim Dim ciudad As String = Me.txtCiudad.Text.Trim Dim fax As String = Me.txtFax.Text.Trim Dim pais As String = Me.cboPais.SelectedValue objIncluir.Incluir(empresaID, empresa, contacto, direccion, ciudad, _ telefono, fax, pais, conexion) ArmaClientes() btnSalvar.Enabled = False btnExcluir.Enabled = True btnIncluir.Enabled = True Catch err As Exception MessageBox.Show(err.Message) End Try End Sub Sub ActualizarCliente() If Not ValidaDatos() Then Exit Sub End If Try Dim objActualizar As New clsCustomers Dim empresaID As String = Me.txtEmpresaID.Text.Trim Dim empresa As String = Me.txtEmpresa.Text.Trim Dim contacto As String = Me.txtContacto.Text.Trim Dim telefono As String = Me.txtTelefono.Text.Trim Dim direccion As String = Me.txtDireccion.Text.Trim Dim ciudad As String = Me.txtCiudad.Text.Trim

Pagina: 30

Page 31: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Dim fax As String = Me.txtFax.Text.Trim Dim pais As String = Me.cboPais.SelectedValue objActualizar.Actualizar(empresaID, empresa, contacto, direccion, ciudad, _ telefono, fax, pais, conexion) btnSalvar.Enabled = True btnExcluir.Enabled = True btnIncluir.Enabled = True Catch err As Exception MessageBox.Show(err.Message) End Try End Sub

Private Function ValidaDatos() As Boolean If txtEmpresaID.Text = "" Or txtEmpresa.Text = "" Or txtContacto.Text = "" Or txtDireccion.Text = "" Or txtCiudad.Text = "" Or txtTelefono.Text = "" Or txtFax.Text = "" Or cboPais.SelectedIndex = -1 Then MessageBox.Show("Por favor, llene todos los datos", "Clientes", MessageBoxButtons.OK) Return False Else Return True End If End Function

Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click Try If MessageBox.Show("¿Está seguro que desea excluir al Cliente?", "Excluir Cliente", MessageBoxButtons.YesNo) = DialogResult.Yes Then Dim empresaID As String = Me.txtEmpresaID.Text.Trim Dim objExcluir As New clsCustomers objExcluir.Excluir(empresaID, conexion) ArmaClientes() LimpiarCampos() btnSalvar.Enabled = True Else btnSalvar.Enabled = False End If Catch err As Exception MessageBox.Show(err.Message) End Try End SubEnd Class

Pagina: 31

Page 32: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Interoperabilidade

Crear y consumir componente .NET

Cierre todos los proyectos abiertos y cree un nuevo proyecto Class Library llamado Componentes.

Public Class clsAccentos Public Function SinAccentos(ByVal Nombre As String) As String Dim intComp As Integer Dim strSinAccento As String Dim intponteiro As Integer Dim strLetra As String intComp = Len(Nombre) For intponteiro = 1 To intComp strLetra = Mid(Nombre, intponteiro, 1) Select Case strLetra Case "Ä", "Å", "Á", "Â", "À", "Ã" strSinAccento = strSinAccento & "A" Case "ä", "á", "â", "à", "ã" strSinAccento = strSinAccento & "a" Case "É", "Ê", "Ë", "È" strSinAccento = strSinAccento & "E" Case "é", "ê", "ë", "è" strSinAccento = strSinAccento & "e" Case "Í", "Î", "Ï", "Ì" strSinAccento = strSinAccento & "I" Case "í", "î", "ï", "ì" strSinAccento = strSinAccento & "i" Case "Ö", "Ó", "Ô", "Ò", "Õ" strSinAccento = strSinAccento & "O" Case "ö", "ó", "ô", "ò", "õ" strSinAccento = strSinAccento & "o" Case "Ü", "Ú", "Û" strSinAccento = strSinAccento & "U" Case "ü", "ú", "û", "ù" strSinAccento = strSinAccento & "u" Case "Ç" strSinAccento = strSinAccento & "C" Case "ç" strSinAccento = strSinAccento & "c" Case Else strSinAccento = strSinAccento & strLetra End Select Next intponteiro SinAccentos = strSinAccento End FunctionEnd Class

Pagina: 32

Page 33: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Imports System.Data.SqlClient

Public Class clsProductosPrecios Public Function Categorias() As DataSet Dim conn As SqlConnection Dim sql As String = "SELECT CategoryID, CategoryName FROM Categories ORDER BY CategoryName" Dim da As SqlDataAdapter Dim ds As DataSet conn = New SqlConnection("Initial Catalog=Northwind;Data Source=wind;user id=sa;") conn.Open() da = New SqlDataAdapter(sql, conn) ds = New DataSet da.Fill(ds, "categorias") Return ds End Function

Public Function Precios(ByVal codigo As Integer) As DataSet Dim conn As SqlConnection Dim sql As String Dim da As SqlDataAdapter Dim ds As DataSet sql = "SELECT ProductName + ' (' + LTrim(Str(UnitPrice)) + ')' As Producto, ProductID FROM Products " sql = sql & "Where CategoryID = " & codigo conn = New SqlConnection("Initial Catalog=Northwind;Data Source=wind;user id=sa;") conn.Open() da = New SqlDataAdapter(sql, conn) ds = New DataSet da.Fill(ds, "precios") Return ds End FunctionEnd Class

Seleccione el menú Build / Build Solution para generar la DLL. Abra WinAppLatam. El primer paso consiste en referenciar la DLL que será consumida en el formulario; para ello seleccione el menú Project / Add Reference, localize la DLL generada anteriormente y haga click en el botón OK.Adicione el seguinte formulario para consumir la clase de acentuación generada en la DLL.

Nombre del formulario: FormCompAccentosStartPosition: CenterScreenText: Componente Accentos

Controls y propiedadesLabel1 (Text): OriginalTextBox1 (ID): txtConAcentosMultiline: True

Label2 (Text): Sin Accentos

Pagina: 33

Page 34: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

TextBox1 (ID): txtSinAccentosMultiline: True

Button1 (Text): Retirar los Accentos

Códigos

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim accentos As New Componentes.clsAccentos Me.txtSinAccentos.Text = accentos.SinAccentos(Me.txtConAccentos.Text)End Sub

Otro formulario.

Nombre del formulario: FormCompProductosStartPosition: CenterScreenText: Consume Componente Productos

Controls y propiedadesLabel1 (Text): CategoriasComboBox1 (ID): cboCategoriasLabel2 (Text): ProductosCheckedListBox: ckProductos

Códigos

Imports ComponentesPublic Class FormCompProductos Inherits System.Windows.Forms.Form

Private Sub FormCompProductos_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim comp As New Componentes.clsProductosPrecios With Me.cboCategorias .DisplayMember = "CategoryName" .ValueMember = "CategoryID" .DataSource = comp.Categorias.Tables("categorias").DefaultView End With End Sub

Private Sub cboCategorias_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboCategorias.SelectedIndexChanged Dim comp As New Componentes.clsProductosPrecios With Me.ckProductos .DisplayMember = "Producto" .ValueMember = "ProductID"

Pagina: 34

Page 35: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

.DataSource = comp.Precios(Me.cboCategorias.SelectedValue).Tables("precios").DefaultView End With End SubEnd Class

Pagina: 35

Page 36: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Web Services

Crear y consumir Web Service

Crea un nuevo proyecto del tipo ASP.NET Web Service llamado ProjetoWebServices. Adicione 3 nuevos Web Methods:

Imports System.Web.ServicesImports System.Data.SqlClient

<WebMethod(Description:="Tipos de deportes")> _ Public Function TiposDeportes() As ArrayList Dim ArrayTipos As New ArrayList With ArrayTipos .Add("Agua") .Add("Aire") .Add("Tierra") End With Return ArrayTipos End Function

<WebMethod(Description:="Modalidades de Deportes")> _ Public Function Deportes(ByVal tipo As String) As ArrayList Dim ArrayDeportes As New ArrayList Select Case tipo Case "Agua" With ArrayDeportes .Add("Natación") .Add("Windsurf") .Add("Surf") .Add("Regata Velero") .Add("Regata Océano") End With Case "Aire" With ArrayDeportes .Add("Parapente") .Add("Aladelta") .Add("Aeromodelismo") End With Case "Tierra" With ArrayDeportes .Add("Ciclismo") .Add("Maratona") .Add("Tenis") .Add("Montain Bike") .Add("Voleibol") .Add("Fútbol") .Add("Basquetbol") End With End Select

Pagina: 36

Page 37: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Return ArrayDeportes End Function

<WebMethod(Description:="Listado de autores")> _ Public Function Autores() As DataSet Dim conn As SqlConnection Dim sql As String = "SELECT au_fname + ' ' + au_lname FROM authors" Dim da As SqlDataAdapter Dim ds As DataSet conn = New SqlConnection("Initial Catalog=Pubs;Data Source=wind;user id=sa;") conn.Open() da = New SqlDataAdapter(sql, conn) ds = New DataSet da.Fill(ds, "autores") Return ds End Function

Nombre del formulario: ConsumeWebServices

Controls y propiedadesLabel2 (Text): TiposListBox1 (ID): lstTiposLabel3 (Text): DeportesListBox1 (ID): lstDeportesLabel4 (Text): AutoresListBox1 (ID): lstAutores

Códigos

Public Class ConsumeWebServices Inherits System.Windows.Forms.Form

Dim ws As New localhost.MS_WebServices

Private Sub ConsumeWebServices_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Tipos de Deportes Me.lstTipos.DataSource = ws.TiposDeportes

'Autores Me.lstAutores.DisplayMember = "Column1" Me.lstAutores.DataSource = ws.Autores.Tables("autores").DefaultView End Sub

Private Sub lstTipos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTipos.SelectedIndexChanged ' Arma el Web Service de Deportes según el tipo selecionado Me.lstDeportes.DataSource = ws.Deportes(Me.lstTipos.SelectedValue) End Sub

Pagina: 37

Page 38: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

End Class

Pagina: 38

Page 39: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

OOP

Abstracción y Encapsulamiento

Add / Add Class

Nombre de la clase: clsNatacion'*** Abstracción ***Public Class clsNatacion Public Nadador As String Public Tiempo As Integer Public Sub EntrarPiscina() 'código para entrar de la piscina End Sub

Public Sub SalirPiscina() 'codigo para salir de la piscina End SubEnd Class

Nombre de la clase: clsNadadores'Encapsulamiento'Maneras diferentes de escribir una clase (Caja Negra)Public Class clsNadadores Private myNadador As String Private myPrueba As String Public Property Nadador() As String Get Nadador = myNadador End Get Set(ByVal Value As String) myNadador = Value End Set End Property Public Property Prueba() As String Get Prueba = myPrueba End Get Set(ByVal Value As String) myPrueba = Value End Set End Property ReadOnly Property DatosNadador() As String Get DatosNadador = myNadador & " - " & myPrueba End Get End PropertyEnd Class

Pagina: 39

Page 40: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

'Otra manera de escribir la misma clasePublic Class Nadadores2 Private myNadador As String Private myPrueba As String Private myDatosNadador As String 'nuevo dato Public Property Nadador() As String Get Nadador = myNadador End Get Set(ByVal Value As String) myNadador = Value myDatosNadador = myNadador & " - " & myPrueba End Set End Property Public Property Prueba() As String Get Prueba = myPrueba End Get Set(ByVal Value As String) myPrueba = Value myDatosNadador = myNadador & " - " & myPrueba End Set End Property ReadOnly Property DatosNadador() As String Get DatosNadador = myDatosNadador End Get End PropertyEnd Class

Pagina: 40

Page 41: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Herencia

Add / Add Class.

Nombre de la clase: clsCarpinteria'*** Herencia ***Public Class clsCarpinteria Private myMaterial As String = "Destornillador" Protected myPresionMinima As Integer = 80 Public Property Material() As String Get Material = myMaterial End Get Set(ByVal Value As String) myMaterial = Value End Set End Property

'El Overridable indica que este elemento puede ser sobrepuesto Public Overridable Function Atornillar(ByVal fuerza As Integer) As Boolean If fuerza > myPresionMinima Then Return True Else Return False End If End FunctionEnd Class

Public Class clsBarco Inherits clsCarpinteria Public Overrides Function Atornillar(ByVal fuerza As Integer) As Boolean If myPresionMinima < 120 Then If fuerza > 100 Then Return True Else Return False End If End If End FunctionEnd Class

Crea un nuevo formulario.

Nombre del formulario: FormOOPControle: ID: btnHerançaText: Herancia – clsCarpinteria

Private Sub btnHerencia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHerencia.Click Dim objCasa As New clsCarpinteria Dim objBarco As New clsBarco

Pagina: 41

Page 42: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Dim msgCasa, msgBarco As String msgCasa = objCasa.Material & vbNewLine msgCasa += objCasa.Atornillar(67).ToString MessageBox.Show(msgCasa)

msgBarco = objBarco.Material & vbNewLine msgBarco += objBarco.Atornillar(120).ToString MessageBox.Show(msgBarco)End Sub

Add / Add Class.

'*** Herencia ***\Public Class clsAutomovil Private myPeso As Integer Private myColor As String Public Property Peso() As Integer Get Return myPeso End Get Set(ByVal Value As Integer) myPeso = Value End Set End Property Public Property Color() As String Get Return myColor End Get Set(ByVal Value As String) myColor = Value End Set End PropertyEnd Class

Crea un nuevo formulario.

Nombre del formulario: FormCaminhao

Controls y propiedadesLabel1 (Text): Cor:TextBox1 (ID): txtColorLabel2 (Text): Peso:TextBox2 (ID): txtPesoLabel3 (Text): Tipo:TextBox3 (ID): txtTipoButton1 (ID): btnValores / Text: Asignar Valores

Private Sub btnValores_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValores.Click Dim objCamion As New clsCamion With objCamion .Color = "Amarillo"

Pagina: 42

Page 43: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

.Peso = 12500 .Tipo = "Camión-Remolque" Me.txtColor.Text = .Color Me.txtPeso.Text = .Peso Me.txtTipo.Text = .Tipo End WithEnd Sub

Pagina: 43

Page 44: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Polimorfismo

Adicione una nueva clase (Add / Add Class) clsArbitrarPartido.

'*** Polimorfismo ***Public Class clsArbitrarPartido Public Sub SancionarFalta() MessageBox.Show("Sancionar falta en el partido de basquetbol", "Polimorfismo") End SubEnd Class

Public Class clsArbitroFutbol Public Sub SancionarFalta() MessageBox.Show("Sancionar falta en el partido de fútbol", "Polimorfismo") End SubEnd Class

Formulário FormOOP, crea nuevo botón.Button2 (ID): btnPoli / Text: Polimorfismo

Private Sub btnPoli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPoli.Click Dim objFutbol As New clsArbitroFutbol Dim objBasquetbol As New clsArbitrarPartido Call SancionarFalta(objFutbol) Call SancionarFalta(objBasquetbol)End Sub

Sub SancionarFalta(ByVal obj As System.Object) obj.SancionarFalta()End Sub

Pagina: 44

Page 45: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Integración del XML

Grabar y leer archivos XML

Nombre del formulario: FormXMLPropiedadesText: Grabar y lerr archivos XMLStartPosition: CenterScreen

Controls y propiedadesButton1 (ID): btnGrabar / Text: Grabar XMLButton2 (ID): btnLeer / Text: Leer PedidosButton3 (ID): btnProductos / Text: Leer ProductosDataGrid1 (ID): dgDatos

Crea respectivos DataSets

Códigos

Public Class FormXML Inherits System.Windows.Forms.Form

Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click 'Graba XML Files Try Me.daPedidos.Fill(Me.DsPedidos1.Orders) Me.daProductos.Fill(Me.DsProductos1.Products) Me.DsPedidos1.WriteXml("PedidosXML.xml") Me.DsProductos1.WriteXml("ProductosXML.xml") MessageBox.Show("Archivos XML generados con éxito !!!", "MS XML") Catch err As Exception MessageBox.Show("Ocurrió el error: " & err.Message) End Try End Sub

Private Sub btnLeer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLeer.Click Try ArmaGrid("PedidosXML.xml") Catch err As Exception MessageBox.Show("Ocurrió el error: " & err.Message) End Try End Sub

Sub ArmaGrid(ByVal archivo As String) Try

Pagina: 45

Page 46: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Dim newDS As New DataSet newDS.ReadXml(archivo) Me.dgDatos.DataSource = newDS Me.dgDatos.DataMember = newDS.Tables(0).TableName Me.dgDatos.CaptionText = "Cantidad ítens: " & newDS.Tables(0).Rows.Count Catch Throw End Try End Sub

Private Sub btnProductos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProductos.Click Try ArmaGrid("ProductosXML.xml") Catch err As Exception MessageBox.Show("Ocurrió el error: " & err.Message) End Try End SubEnd Class

Pagina: 46

Page 47: Guia para iniciarse en Visual Studio .Net

Desarrollando Aplicaciones Windows con Visual Basic . NetAutor: Renato I. Haddad (Microsoft Most Valuable Professional)

Threads

Nombre del formulario: FormThread

Controls y propiedadesButton1 ( ID): btnArcTexto / Text: Inicia la grabación del archivo textoButton2 ( ID): btnMsg / Text: Envía un Message Box

Private Sub btnArcTexto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnArcTexto.Click Dim objThread As New System.Threading.Thread(AddressOf Me.CreaArchivo) objThread.Start()End Sub

Sub CreaArchivo() Dim objArc As New System.IO.FileStream("c:\WinAppLatam\thread.txt", IO.FileMode.OpenOrCreate) Dim arc As New System.IO.StreamWriter(objArc) Dim aux1, aux2 As Integer For aux1 = 1 To 500 For aux2 = 1 To 500 arc.WriteLine(aux1.ToString & " - " & aux2.ToString) Next Next arc.Close() MessageBox.Show("Finalizó la grabación del archivo", "MS")End Sub

Private Sub btnMsg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMsg.Click MessageBox.Show("Mensaje emitido al usuario", "MS")End Sub

Pagina: 47