Una Aplicacion en 3 Capas

Post on 12-Jun-2015

7.684 views 2 download

description

Enfoque teorico de una programacion en N capas en c#Ing. Alberto Moreno

Transcript of Una Aplicacion en 3 Capas

http://www.desarrolladoras.com - info@desarrolladoras.com

Desarrollo de una aplicaciónDesarrollo de una aplicaciónen tres capasen tres capas

con interfase Cliente Windows,con interfase Cliente Windows,uso de Data Access A. Blocks, uso de Data Access A. Blocks,

DataSets tipadosDataSets tipadosy ...y ...

http://www.desarrolladoras.com - info@desarrolladoras.com

otras yerbas…otras yerbas…

por Vilma Hinterwimmerpor Vilma Hinterwimmer

vilmahinter@desarrolladoras.comvilmahinter@desarrolladoras.com

por Vilma Hinterwimmerpor Vilma Hinterwimmer

vilmahinter@desarrolladoras.comvilmahinter@desarrolladoras.com

En el día de la Tradición…En el día de la Tradición…¿nos darán un mate al menos …?¿nos darán un mate al menos …?

Inspirada en la Aplicación Pachacamac de Daniel Seara.

Gracias Daniel por enseñarnos tanto!

http://www.desarrolladoras.com - info@desarrolladoras.com

Temas a tratar.... Temas a tratar.... si llegamos a tiempo!si llegamos a tiempo!

• Identificando las capas y los proyectos

• Creando la solución y los proyectos

• DataSet tipados

• Donde almacenamos la cadena de conexión

• Usando el Data Access Application Blocks

http://www.desarrolladoras.com - info@desarrolladoras.com

…….mas temas.mas temas

• La Clase Entidad y sus derivadas

• Herencia de Formularios

• Armado de un formulario tipo Outlook Express

• Principales propiedades, métodos y eventos de algunos controles

http://www.desarrolladoras.com - info@desarrolladoras.com

La AplicaciónLa Aplicación

http://www.desarrolladoras.com - info@desarrolladoras.com

Cliente

Webo

Windows

Negocio

Reglasy

Entidades

Datos

DAAB

Identificando las capasIdentificando las capas

Usuario Repositorio de DatosAplicación

http://www.desarrolladoras.com - info@desarrolladoras.com

Negocio

Reglas de negocio

Entidades

Clases cuyos métodos implementan las reglas de negocio globales

Clases bases y sus heredades que definen los objetos a utilizar en la aplicación: Cliente, Proveedor, Factura, etc.

CapasCapas Cliente

Interfaz gráfica con el Usuario, puede ser Web o Windows

Datos

Acceso a repositorios de Datos directo o a través del DAAB

http://www.desarrolladoras.com - info@desarrolladoras.com

Creando la solución y los proyectosCreando la solución y los proyectos

Cliente Negocio Datos

• Creamos una Solución en blanco

• Agregamos los Proyectos:

Nombre del proyecto Tipo de proyecto

Alumnos Aplicación para Windows AluNegocio Biblioteca de Clases

AluDatos Biblioteca de ClasesAluGlobal Biblioteca de ClasesData Access Application Block Existente

http://www.desarrolladoras.com - info@desarrolladoras.com

Relación entre las capas y los proyectosRelación entre las capas y los proyectos

Cliente

Negocio

Cliente Negocio Datos

ALUMNOS

ALU

NEGOCIO

ALUGLOBAL

Proyecto Capa Referencias entre proyectos

DAAB

ALU

DATOS

APLICACION

http://www.desarrolladoras.com - info@desarrolladoras.com

Capa Capa dede

DatosDatos

http://www.desarrolladoras.com - info@desarrolladoras.com

DataSets tipadosDataSets tipados

La difícil tarea de crear DataSets tipados

en tan solo 4 Pasos...

http://www.desarrolladoras.com - info@desarrolladoras.com

1. Agregar un Archivo DataSet.xsd al proyecto

http://www.desarrolladoras.com - info@desarrolladoras.com

2.Agregar una conexión a datos en el Explorador de Servidores

http://www.desarrolladoras.com - info@desarrolladoras.com

Dos pasos mas Dos pasos mas para llegar a tener...para llegar a tener...

¡Un DataSet Tipado!¡Un DataSet Tipado!

http://www.desarrolladoras.com - info@desarrolladoras.com

3.Agregar la definición de la tabla al DataSet tipado ( drag and drop – arrastrar y soltar )

http://www.desarrolladoras.com - info@desarrolladoras.com

4.Generar la clase (Generar conjunto de datos)

y..... LISTO!!!!!y..... LISTO!!!!!

http://www.desarrolladoras.com - info@desarrolladoras.com

Este es nuestro DataSet tipadoEste es nuestro DataSet tipado

Un archivo .vb que contiene una clase...

la escribió Visual Studio por nosotros...

y ahora la podemos usar....

http://www.desarrolladoras.com - info@desarrolladoras.com

y...y...

¿Para que sirve¿Para que sirve un Dataset Tipado? un Dataset Tipado?

Para facilitarnos...Para facilitarnos...

¡LA VIDA!¡LA VIDA!

http://www.desarrolladoras.com - info@desarrolladoras.com

Escribiendo código Escribiendo código con uncon un

DataSet tipado DataSet tipado

http://www.desarrolladoras.com - info@desarrolladoras.com

Tabla o Procedimiento Almacenado

TCliente

Nombre del Campo

Tipo del Campo

Nombre varchar

Direccion varchar

Saldo decimal

Clave varbinary

Sucursal smallint

La definición del dataset ahora será

Dim dstCliente As New dsCliente

La tabla será dstCliente.TCliente

A los campos de la fila n los llamamos:

dstCliente.TCliente(n).NombredstCliente.TCliente(n).DirecciondstCliente.TCliente(n).SaldodstCliente.TCliente(n).ClavedstCliente.TCliente(n).Sucursal

http://www.desarrolladoras.com - info@desarrolladoras.com

donde antes escribíamos…

ahora podemos a escribir…..

donde antes escribíamos…

ahora podemos a escribir…..

ComboBox1.DataSource = dstCliente.Tables( _ “TCliente”)

ComboBox1.DataSource = dstCliente.TCliente

txtnombre.Text = dstCliente.Tables( _ “TCliente”).Rows(n).Item(0).ToString

txtnombre.Text = dstCliente.TCliente(n).Nombre

http://www.desarrolladoras.com - info@desarrolladoras.com

¿Donde guardamos la ¿Donde guardamos la cadena de conexión?cadena de conexión?

http://www.desarrolladoras.com - info@desarrolladoras.com

Almacenaremos la cadena de conexión Almacenaremos la cadena de conexión en el archivo de configuraciónen el archivo de configuración

de la Aplicaciónde la Aplicación

¿A que proyecto lo agregamos?

Al proyecto...

ALUMNOS

http://www.desarrolladoras.com - info@desarrolladoras.com

Agregamos un archivo App.Config Agregamos un archivo App.Config al Proyecto Alumnos (Capa Cliente)al Proyecto Alumnos (Capa Cliente)

http://www.desarrolladoras.com - info@desarrolladoras.com

Agregamos la clave y el valor de la cadena de Agregamos la clave y el valor de la cadena de conexión al archivo de configuraciónconexión al archivo de configuración

<appSettings>

<add key=“StrConn“

value="server=MiServidor;database=DB

;trusted_connection=true"/>

</appSettings>

http://www.desarrolladoras.com - info@desarrolladoras.com

Así se verá en el Visual Studio nuestroAsí se verá en el Visual Studio nuestro archivo de configuraciónarchivo de configuración

Habría que encriptar la cadena de configuración para guardarla en el Archivo de Configuración.

Lo dejaremos para el próximo evento...

http://www.desarrolladoras.com - info@desarrolladoras.com

Accedemos al valor desde el códigoAccedemos al valor desde el código

Dim strconn as String = _

Configuration.ConfigurationSettings.AppSettings( _

“StrConn")

http://www.desarrolladoras.com - info@desarrolladoras.com

Data AccessData AccessApplication BlocksApplication Blocks

http://www.desarrolladoras.com - info@desarrolladoras.com

La clase y los métodos La clase y los métodos principalesprincipales

Clase SqlHelperClase SqlHelper

Métodos Métodos

ExecuteReader

ExecuteNonQuery

ExecuteDataset

FillDataset

http://www.desarrolladoras.com - info@desarrolladoras.com

ExecuteReaderExecuteReader

Devuelve un SQLDataReader con el cual accedemos a las filas

ExecuteReader(ByVal connectionString As String, _ ByVal commandType As CommandType, _ ByVal commandText As String, _ ByVal ParamArray commandParameters() As SqlParameter)

ExecuteNonQueryExecuteNonQuery

Devuelve el numero de filas afectadas

ExecuteNonQuery(ByVal connectionString As String, _ ByVal commandType As CommandType,

ByVal commandText As String, _ ByVal ParamArray commandParameters() As SqlParameter)

http://www.desarrolladoras.com - info@desarrolladoras.com

ExecuteDatasetExecuteDataset

Devuelve un DataSet

ExecuteDataset(ByVal connectionString As String, _ ByVal commandType As CommandType, _ ByVal commandText As String, _ ByVal ParamArray commandParameters() As SqlParameter)

FillDatasetFillDataset

Llena de datos un DataSet que le pasamos como argumento, no devuelve ningún valor

FillDataset(connectionString As String, commandType As CommandType, _ commandText As String, _ dataSet As DataSet, _ tableNames() As String, _ ByVal ParamArray commandParameters() As SqlParameter)

http://www.desarrolladoras.com - info@desarrolladoras.com

EjemplosEjemplos

ExecuteReaderExecuteReader

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

... Dim drCat1 As SqlDataReaderdrCat1 = SqlHelper.ExecuteReader( strconn, _ CommandType.StoredProcedure, _ "GetProductsByCategory", _ New SqlParameter("@CategoryID", 1))

...drCat1.Close()

http://www.desarrolladoras.com - info@desarrolladoras.com

EjemplosEjemplos

ExecuteNonQueryExecuteNonQuery

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

Public Shared Function GrabarCliente(ByVal cliente As String) _ as Integer

Dim Params(0) As SqlParameterParams(0) = New SqlParameter("@NomCliente", _

SqlDbType.VarChar, 50) Params(0).Value = cliente Return ExecuteNonQuery( strconn, _ CommandType.StoredProcedure, _ “Clientes_Insert", Params)End Function

http://www.desarrolladoras.com - info@desarrolladoras.com

EjemplosEjemplos

ExecuteDatasetExecuteDataset

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

Public Shared Function LeerTodos( ) As DataSet Return ExecuteDataset( strconn,CommandType.StoredProcedure, _ “Clientes_GetAll“)End Function

http://www.desarrolladoras.com - info@desarrolladoras.com

EjemplosEjemplos

FillDatasetFillDataset

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

Public Shared Function LeerTodos( ByVal ds as Dataset ) _As DataSet

Dim strTabla() As String = {“Parametros_GetAll"} FillDataset( strconn, CommandType.StoredProcedure, _

"Parametros_GetAll", ds, strTabla) Return ds End Function

http://www.desarrolladoras.com - info@desarrolladoras.com

PausaPausa

MateMateBreakBreak

http://www.desarrolladoras.com - info@desarrolladoras.com

Escribiendo el código de la Escribiendo el código de la Capa de DatosCapa de Datos

1. Agregamos una clase al proyecto AluDatos.

2. Esta clase va a tener varios métodos compartidos para las distintas operaciones que necesitemos hacer sobre la Base de Datos.

TraerDataSet

Actualizar

Borrar

GuardarValor

http://www.desarrolladoras.com - info@desarrolladoras.com

Escribiendo el código de la Escribiendo el código de la Capa de DatosCapa de Datos

Public Class CGrlDatos

Shared ConnAlu As String = _ Configuration.ConfigurationSettings.AppSettings("ConnALU")

Public Shared Function TraerDataset( _ ByVal entidad As String) As DataSet Try Return ExecuteDataset(ConnAlu, _ CommandType.StoredProcedure, entidad & "_GetAll") Catch ex As Exception

Throw ex End Try End Function...End Class

http://www.desarrolladoras.com - info@desarrolladoras.com

Capa Capa NegocioNegocio

http://www.desarrolladoras.com - info@desarrolladoras.com

Escribiendo el código de la Escribiendo el código de la Capa NegocioCapa Negocio

1.Agregamos una Clase CEntidad al proyecto AluNegocio.

2.Va a ser la Clase base de la cual vamos a heredar para crear mas fácilmente las demás.

3.Esta Clase va a estar compuesta por:

Declaración de Variables

Un constructor

Propiedades

Métodos

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidad

Public Class CEntidad

Declaración de Variables

Constructores

Propiedades

Metodos

End Class

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidadVariablesVariables

#Region "Declaración de Variables“

Friend mNomEnt As StringFriend mId As IntegerProtected Friend mDatos As DataRowProtected Friend mTDatos As DataSet

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidadConstructorConstructor

#Region "Constructores"

Sub New(ByVal NombreEntidad As String)mNomEnt = NombreEntidad

End Sub

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com

CCllaassee

CCEEnnttiiddaad d

#Region "Propiedades"

Public Overridable Property Id() As Integer Get

Return mId End Get

Set(ByVal Value As Integer)Try mId = Value CGrlDatos.TraerDataset(mTDatos, mNomEnt, mId) If mTDatos.Tables(0).Rows.Count > 0 Then

mDatos = mTDatos.Tables(0).Rows(0) Else

mDatos = mTDatos.Tables(0).NewRowmTDatos.Tables(0).Rows.Add(mDatos)

End If Catch ex As Exception

Throw ex End Try

End Set End Property

#End Region

PPrrooppiieeddaaddeess

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidadMétodosMétodos

Public Overridable Function TraerTodos() As DataSetTry

Return CGrlDatos.TraerDataset(New DataSet, _mNomEnt, mNomEnt & "_GetAll")

Catch ex As ExceptionThrow ex

End TryEnd Function

Public Overridable Function TraerLista() As DataSetTry

Return CGrlDatos.TraerDataset(New DataSet, _ mNomEnt, mNomEnt & "_GetList")

Catch ex As ExceptionThrow ex

End TryEnd Function

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidadMétodosMétodos

Public Overridable Function TraerUno() As DataSetTry

Return CGrlDatos.TraerDataset(New DataSet, _ mNomEnt & "_GetByNro" & _ mNomEnt.PadLeft(3), Me.Id)

Catch ex As ExceptionThrow ex

End TryEnd Function

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidadMétodosMétodos

Public Overridable Sub Actualizar()Try Dim DatosUno() As Object = _

mTDatos.Tables(0).Rows(0).ItemArray() If Me.Id <> -1 Then

CGrlDatos.Actualizar(mDatos, mNomEnt & "_Update") Else

CGrlDatos.ActualizarSal(mDatos, mNomEnt & "_Insert")Me.Id = DatosUno(0)

End IfCatch ex As Exception

Throw exEnd Try

End Sub

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CEntidadClase CEntidadMétodosMétodos

Public Overridable Function Eliminar(ByVal Id As Integer, _ ByVal nomparam As Array) As Integer

Try Return CGrlDatos.Borrar(nomparam, _

mNomEnt & "_Delete", Id)Catch ex As Exception Throw exEnd Try

End Function

http://www.desarrolladoras.com - info@desarrolladoras.com

Escribiendo el código de la Escribiendo el código de la Capa NegocioCapa Negocio

1. Agregamos una Clase por cada entidad que necesitemos, en este caso Alumnos, Curso, Asignaturas, Localidades, Paises, etc... al proyecto AluNegocio.

2. Estas Clases van a heredar de la Clase base CEntidad

3. Cada una de estas Clases va a estar compuesta por:

Declaración de Variables

Un constructor

Propiedades

Métodos

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CPaisClase CPais

Public Class CPais

Inherits ALU.AluNegocio.CEntidad

Declaración de Variables

Constructores

Propiedades

Actualización

End Class

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CPaisClase CPaisVariablesVariables

#Region "Declaración de Variables“

Protected Friend mTodosDatos As New dsPaisesPrivate Pais As dsPaises.PaisesRow

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com

#Region "Constructores"

Sub New(ByVal value As Integer) MyBase.New("Paises") Try

MyBase.mId = valuemTodosDatos.Clear()CGrlDatos.TraerDataset(mTodosDatos, mNomEnt,

value)If mTodosDatos.Tables(0).Rows.Count = 0 Then

Pais = mTodosDatos.Paises.NewPaisesRowPais.PaiNroPai = -1Pais.PaiDesc = ""

ElsePais = mTodosDatos.Paises.Rows(0)

End IfMyBase.mTDatos = mTodosDatosMyBase.mDatos = Pais

Catch ex As ExceptionThrow ex

End Try End Sub#End Region

CCllaassee

CCPPaaiis s

CCoonnssttrruuccttoorr

http://www.desarrolladoras.com - info@desarrolladoras.com

CCllaassee

CCPPiiaas s

#Region "Propiedades"

Public Overrides Property Id() As IntegerGet

Return MyBase.mIdEnd Get

Set(ByVal Value As Integer)MyBase.mId = Value

End SetEnd Property

Public Property Desc() As StringGet

Return Pais.PaiDescEnd GetSet(ByVal Value As String)

Pais.PaiDesc = ValueEnd Set

End Property

#End Region

PPrrooppiieeddaaddeess

http://www.desarrolladoras.com - info@desarrolladoras.com

Clase CPaisClase CPaisMétodosMétodos

#Region "Actualización"

Public Overrides Sub Actualizar()Try If Me.Id > 0 Then

CGrlDatos.Actualizar(Pais, Me.mNomEnt & "_Update") Else

mId = CGrlDatos.ActualizarSal(Pais, _ Me.mNomEnt & "_Insert")

End IfCatch ex As Exception Throw exEnd Try

End Sub

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com

Capa Capa ClienteCliente

http://www.desarrolladoras.com - info@desarrolladoras.com

Herencia Herencia de de

FormulariosFormularios

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario BaseFormulario Base

Public Class CUsuario

Inherits USU.Negocio.CEntidad

• Creamos un Formulario del cual van a heredar la mayoría de los Formularios de nuestra Aplicación

• Colocamos este Formulario en el Proyecto AluGlobal para poder hacer referencia a él desde el Proyecto Alumnos y cualquier otro Proyecto que agreguemos en la capa Cliente.

• Agregamos a este Formulario todas las cosas que se van a repetir en todos los formularios. Icono del Sistema, Nombre de la Empresa, etc...

• Generamos la solución para que se genere el Assembly y así poder heredarlo

• Creamos un Formulario del cual van a heredar la mayoría de los Formularios de nuestra Aplicación

• Colocamos este Formulario en el Proyecto AluGlobal para poder hacer referencia a él desde el Proyecto Alumnos y cualquier otro Proyecto que agreguemos en la capa Cliente.

• Agregamos a este Formulario todas las cosas que se van a repetir en todos los formularios. Icono del Sistema, Nombre de la Empresa, etc...

• Generamos la solución para que se genere el Assembly y así poder heredarlo

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario HeredadoFormulario Heredado

Agregamos un Formulario que va a heredar todas las características de nuestro Formulario Base

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario HeredadoFormulario Heredado

También podríamos haber elegido Formulario Heredado del cuadro de diálogo Agregar Nuevo Elemento

Elegimos el Formulario del cual vamos a heredar

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario HeredadoFormulario Heredado

• Ya tenemos nuestro Formulario Heredado

• Todo lo que agregamos en el Formulario Base va a estar en todos los formularios heredados del mismo.

• Ahora nos dedicamos a agregarle a los Formularios heredados los controles particulares del mismos sin tener que preocuparnos que las cosas generales queden en distinto formato en los distintos formularios de la aplicación.

• Ya tenemos nuestro Formulario Heredado

• Todo lo que agregamos en el Formulario Base va a estar en todos los formularios heredados del mismo.

• Ahora nos dedicamos a agregarle a los Formularios heredados los controles particulares del mismos sin tener que preocuparnos que las cosas generales queden en distinto formato en los distintos formularios de la aplicación.

No tendremos que volver a agregar estos controles No tendremos que volver a agregar estos controles y este código nunca mas!y este código nunca mas!

Todos van a ser iguales!Todos van a ser iguales!

http://www.desarrolladoras.com - info@desarrolladoras.com

Armado de un Formulario Armado de un Formulario

estiloestilo“Outlook Express”“Outlook Express”

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario estilo Formulario estilo “Outlook Express”“Outlook Express”

Es fácil!!!Son sólo 10 pasos

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario estilo “Outlook Express”Formulario estilo “Outlook Express”

1. Colocar en el Formulario todos los controles que vayan pegados sobre sus bordes. ToolBar, StatusBar, etc...

2. Colocar un control Panel y cambiar su propiedad Dock a Left

3. Colocar un control Splitter en el Formulario y cambiar su propiedad Dock a Left

4. Colocar un control ListView en el Formulario y cambiar su propiedad Dock a Fill

1. Colocar en el Formulario todos los controles que vayan pegados sobre sus bordes. ToolBar, StatusBar, etc...

2. Colocar un control Panel y cambiar su propiedad Dock a Left

3. Colocar un control Splitter en el Formulario y cambiar su propiedad Dock a Left

4. Colocar un control ListView en el Formulario y cambiar su propiedad Dock a Fill

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario estilo “Outlook Express”Formulario estilo “Outlook Express”

5. Colocar un control Panel dentro del primer Panel y cambiar su propiedad Dock a Top

6. Colocar un control Splitter dentro del primer Panel y cambiar su propiedad Dock a Top

7. Colocar otro control Panel dentro del primer Panel y cambiar su propiedad Dock a Fill

5. Colocar un control Panel dentro del primer Panel y cambiar su propiedad Dock a Top

6. Colocar un control Splitter dentro del primer Panel y cambiar su propiedad Dock a Top

7. Colocar otro control Panel dentro del primer Panel y cambiar su propiedad Dock a Fill

Sólo faltan 3 pasos mas...

http://www.desarrolladoras.com - info@desarrolladoras.com

Formulario estilo “Outlook Express”Formulario estilo “Outlook Express”

8. Dentro de cada uno de los dos últimos Panel que colocamos, colocar un control Button y cambiar su propiedad Dock a Top

9. Colocar un control TreeView dentro de cada uno de los 2 últimos Panel y cambiar su propiedad Dock a Fill

10.Colocar 2 controles ImageList en el formulario

8. Dentro de cada uno de los dos últimos Panel que colocamos, colocar un control Button y cambiar su propiedad Dock a Top

9. Colocar un control TreeView dentro de cada uno de los 2 últimos Panel y cambiar su propiedad Dock a Fill

10.Colocar 2 controles ImageList en el formulario

Listo!!!

Ahora sólo falta escribir un poquito para llenar de datos los controles y para que además funcionen...

http://www.desarrolladoras.com - info@desarrolladoras.com

PrincipalesPrincipales

Propiedades, Propiedades, Métodos y Métodos y Eventos Eventos

de algunos Controlesde algunos Controles

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

ImageListImageListPropiedades

Images: Colección de imágenes, aquí se cargan los Iconos

ImageSize: Cambiando esta propiedad podemos hacer que los Iconos se vean mas chicos o mas grandes

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

TreeViewTreeViewPropiedades

ImageList: Asignar el nombre del ImageList del cual se van a tomar los Iconos a mostrar

ItemHeight: Altura de cada nodo

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

TreeViewTreeViewPropiedades

Nodes: Colección de nodos, creamos los nodos, le asignamos el texto a mostrar y el índice de icono. También podemos hacer esto por código

SelectedNode: Nodo seleccionado en un instante dado

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

TreeViewTreeViewMétodos

GetNodeAt: Devuelve el nodo, si existe, que se encuentra en el lugar donde se hizo click en base a las coordenadas x e y

ExpandAll: Expande todos los nodos del árbol

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

TreeViewTreeViewEventos

AfterSelected: Se produce luego de seleccionar un nuevo nodo

MouseDown: Se produce al presionar cualquier botón del mouse. Lo utilizamos para saber si hizo click sobre un nodo o no y para cambiar de nodo seleccionado apretando cualquier botón del mouse

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

ListViewListViewPropiedades

LargeImageList: Asignar el nombre del ImageList del cual se van a tomar los Iconos a mostrar de tamaño grande

SmallImageList: Asignar el nombre del ImageList del cual se van a tomar los Iconos a mostrar de tamaño pequeño

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

ListViewListViewPropiedades

View: Estilo de Vista en la que se muestra el ListView

SelectedItems: Colección de elementos seleccionados en el control en un instante dado

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

ListViewListViewEventos

SelectedIndexChanged: Se produce al cambiar el elemento seleccionado

http://www.desarrolladoras.com - info@desarrolladoras.com

Principales Propiedades, Métodos y Eventos Principales Propiedades, Métodos y Eventos de algunos controles de algunos controles

SplitterSplitter

Eventos

SplitterMoved: Se produce al arrastrar el Splitter

http://www.desarrolladoras.com - info@desarrolladoras.com

Links útiles:Links útiles:Universidad.NetUniversidad.Net:

http://www.microsoft.com/spanish/msdn/comunidad/uni.net/

Sitio de Microsoft dedicado a .Net Windows Forms:Sitio de Microsoft dedicado a .Net Windows Forms:

http://www.windowsforms.net

Data Access Aplication Blocks:Data Access Aplication Blocks:

http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp?frame=true

http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431

Desarrollador Cinco Estrellas:Desarrollador Cinco Estrellas:

http://www.microsoft.com/spanish/msdn/comunidad/dce/default.asp

PanoramaBox:PanoramaBox: http://www.panoramabox.com/

http://www.desarrolladoras.com - info@desarrolladoras.com

http://www.desarrolladoras.com - info@desarrolladoras.com

Muchas Gracias

desarrolladoras

www.desarrolladoras.com

http://www.desarrolladoras.com - info@desarrolladoras.com

Clases Instanciadas Clases Instanciadas versus versus

Clases CompartidasClases Compartidas

http://www.desarrolladoras.com - info@desarrolladoras.com

Clases CompartidasClases Compartidas

1. Las clases NO pueden ser compartidas. Sus métodos, propiedades y variables SI pueden serlo

2. Para que un Método, Propiedad y/o Variable sean compartidos debemos calificarlos con la palabra reservada SHARED

3. Un Método, Propiedad y/o Variable compartidos pueden ser usados en cualquier parte del código sin necesidad de crear un nuevo objeto, haciendo referencia al mismo a través del nombre de la clase. Ej: MiClase.MiMetodo()

http://www.desarrolladoras.com - info@desarrolladoras.com

Clases CompartidasClases Compartidas

Public Class MiClase

Public Shared MiVariable As String

Public Shared Sub MiMetodo()MiVariable = "Hola Mundo"

End Sub

End Class

Public Class OtraClase

Public Sub OtroMetodo()MiClase.MiVariable = "Hola

Gente"MiClase.MiMetodo()

End Sub

End Class

http://www.desarrolladoras.com - info@desarrolladoras.com

Clases InstanciadasClases Instanciadas

1. Las clases tal cual las definimos normalmente serán instanciadas mientras NO le agreguemos a algunos de sus miembros el calificativo SHARED (Algunos miembros podrán ser SHARED y a los mismos los podremos invocar a través del nombre de la Clase)

2. Para acceder a sus miembros, Métodos, Propiedades y/o Variables deberemos crear un objeto de esa Clase. Crearemos una nueva instancia.

3. Los Métodos, Propiedades y/o Variables de estas clases pueden ser usados en cualquier parte del código a través de la variable de objeto creada a partir de esta clase.

http://www.desarrolladoras.com - info@desarrolladoras.com

Clases InstanciadasClases Instanciadas

Public Class MiClase

Public MiVariable As String

Public Sub MiMetodo()MiVariable = "Hola Mundo"

End Sub

End Class

Public Class OtraClase

Public Sub OtroMetodo() Dim obj As MiClase = New MiClase obj.MiVariable = "Hola Gente" obj.MiMetodo()

End Sub

End Class