Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
VISUAL
STUDIO.NET
Manual del
Participante
1 de 197
Contenido del Curso
Modulo 1 4
Visual Studio .NET 4
Lenguajes .NET 6
Lenguajes en .NET 7
Administración de Ventanas 12
Diseñadores 12
Herramientas de Datos 13
Modulo 2 15
Visual Basic .NET 15
Introducción 15
Tipos de Datos 16
Variables 17
Arrays 18
Procedimientos 20
Manejo de Threads 21
Implementación de Threads 21
Estado de un Thread 22
2 de 197
Depuración 23
Barras de Depuración 23
Ventanas de Depuración 26
Control de Excepciones 30
Tipos de Errores 30
Laboratorio 3: 34
Introducción 41
Objeto Formulario 42
Interfaces 60
Introducción 60
3 de 197
Menús 65
Diálogos 66
Barras 70
Laboratorio 3: 72
Clase 89
Propiedades 94
Métodos 96
Eventos 98
Polimorfismo 114
4 de 197
Laboratorio 4: 115
5 de 197
Modulo 1
Visual Studio .NET
Introducción a Visual Studio .NET
Vis ual Studio .NET es la Herramienta Rápida de Des arrollo (RAD) de Micros oft para la
s iguiente generación de Internet que s on los Servicios Web XML. Es ta herramienta
permite la creación de aplicaciones us ando el Marco .NET, es decir us ando el CLR, la
Librería de Clas es , ADO .NET, ASP .NET, etc.
Es un s oftware que brinda las herramientas neces arias para crear, dis tribuir,
adminis trar y dar mantenimiento a aplicaciones Web dis tribuidas que us an S ervicios
Web XML, todo es to con una gran facilidad, rapidez y bajo cos to.
A diferencia de la vers ión anterior no exis te Vis ual Interdev, ni Vis ual J++, además
Vis ual Foxpro .NET no comparte las caracterís ticas unificadas del Marco .NET
6 de 197
Herramienta Rápida de Desarrollo (RAD)
Entre algunas de las ventajas del s oporte RAD de Vis ual Studio tenemos :
Vis ual Studio .NET incluye un dis eñador de páginas Web HTML y ASP .NET bas ado en
formularios Web, el dis eñador permite arras trar controles , clas es de datos , y otros
objetos y configurar s us propiedades como s i fues e un formulario de una aplicación
para Windows .
Para crear Servicios Web XML, Vis ual S tudio .NET incluye una plantilla con Servicios
Web de ejemplo, los cuales puedes modificar y pers onalizar a tu medida, eligiendo
el lenguaje que des eas , que puede s er Vis ual Bas ic .NET, Vis ual C# .NET o Vis ual
C++ .NET
7 de 197
Acceso a Servicios Web XML
Una vez creado los Servicios Web XML deben us ars e en otras aplicaciones del
negocio, para ello Vis ual Studio .NET cuenta con el Explorador de Servidores
(Server Explorer) que permite ver los Servicios Web publicados y us arlos con s olo
un arras tre. También podemos us ar un Servicio Web haciendo referencia des de un
proyecto mediante la opción “Add Web Referente” del menú “Project”.
Con el dis eñador de XML, crear un archivo XML es mas fácil que nunca, ya que s e
mues tra de colores el código y s e auto completan los Tags que uno va es cribiendo.
Es te maneja 3 vis tas : XML, es quemas y datos .
Exis ten mas caracterís ticas RAD en Vis ual Studio .NET, las cuales trataremos mas
adelante.
Lenguajes .NET
El Marco .NET es neutral con res pecto al lenguaje y admite prácticamente cualquiera de
ellos . Es to trae cons igo los s iguientes beneficios para el des arrollador:
8 de 197
Código reusable y compartido
Antes no exis tía una integración total del equipo de des arrollo cuando cada grupo
us aba herramientas diferentes como Vis ual Bas ic 6, Vis ual C++ 6 o Vis ual J++ 6,
en cambio ahora, el código es crito en cualquier lenguaje puede s er us ado des de
otro, ya que todas s on clas es .NET.
Actualmente, todos los lenguajes del Marco .NET comparten las mis mas clas es o
APIS del s is tema, antes cada lenguaje accedía a las APIs de s u manera, de ellos
C++ era el mas fuerte, hoy en día con .NET no exis ten diferencias entre potencia
del lenguaje.
Se puede crear una clas e en un lenguaje y heredars e des de otra clas e es crita en
diferente lenguaje .NET, lo que permite la reutilización total del código por parte de
diferentes des arrolladores .
Se puede controlar errores des de una clas e por mas que el error ocurra en un
objeto creado en otro lenguaje dis tinto al de la clas e que controla el error, también
s e puede realizar el s eguimiento de una aplicación aunque incluya llamadas a otros
lenguajes , etc.
Lenguajes en .NET
9 de 197
En Vis ual Studio .NET vienen los s iguientes Lenguajes de Programación:
Vis ual Foxpro .NET (No adminis trado por el Marco .NET)
Además de es tos lenguajes , el Marco .NET s oporta otros lenguajes , entre los cuales
des tacan:
COBOL: http://www.adtools.com/info/whitepaper/net.html/
SmalTalk: http://www.qks.com/
Eiffel: http://dotnet.eiffel.com/
ML: http://research.microsoft.com/Projects/SML.NET/index.htm
APL: http://www.dyadic.com/
Oberon: http://www.oberon.ethz.ch/lightning/
Scheme: http://rover.cs.nwu.edu/~scheme/
Mercury: http://www.cs.mu.oz.au/research/mercury/
Python: http://aspn.activestate.com/ASPN/NET/index
Mondrian: http://www.mondrian-script.org
Se ha dado el nombre de algunos lenguajes junto con s us res pectivas páginas Web
donde s e puede encontrar información s obre es tos e inclus ive bajars e el compilador
10 de 197
del lenguaje compatible con .NET.
Vis ual Studio .NET tiene un Entorno Integrado de Des arrollo único o compartido para
crear aplicaciones us ando cualquiera de los Lenguajes de Programación, que pueden
s er Vis ual Bas ic, Vis ual C++ o C#.
En es ta nueva vers ión de Vis ual Studio, Vis ual Foxpro mantiene s u propio IDE (s imilar
al de la Vers ión 6), además Vis ual Interdev ya no es parte de Vis ual Studio, ya que las
herramientas de des arrollo para Web es tán dis ponibles a través de los Web Forms
dis ponibles des de el IDE común.
Al iniciar Vis ual Studio .NET aparece (por defecto) la Página de Inicio, tal como s e
mues tra en la Figura 1.4
11 de 197
Des de es ta página de inicio podemos elegir la opción “Get Started” para crear un
nuevo proyecto o abrir uno exis tente o reportar un error del IDE de Vis ual S tudio, s i
elegimos “New Project” s e pres entará la Ventana que s e mues tra en la Figura 2.5
12 de 197
Figura 1.5: Ventana de Crear un Nuevo Proyecto
Si s e elige Vis ual Bas ic o Vis ual C#, las plantillas s e pueden dividir en tres : para
Windows , para Web (Aplicaciones , Servicios , Librería de Clas es , Librería de Controles ,
Proyecto Vacío) y de Cons ola.
En el cas o de elegir como tipo de proyecto “Vis ual Bas ic” y como plantilla “Windows
Application” hay que s eleccionar la ubicación del nuevo proyecto y es cribir el nombre
de es te, el cual creará una carpeta con el mis mo nombre en el lugar s eleccionado. A
continuación la figura 1.6 mues tra el IDE compartido de Vis ual Studio .NET en el cas o
de elegir una Aplicación para Windows .
13 de 197
Figura 1.6: IDE Compartido de Visual Studio .NET
1. Menu Bar
2. ToolBars
6. Status Bar
14 de 197
9. Properties Window (F4)
Exis ten nuevas ventanas en Vis ual Studio .NET entre las cuales tenemos :
Nota: Para mos trar u ocultar cualquier ventana del IDE elegir el menú “View”
Administración de Ventanas
El manejo de ventanas en Vis ual Studio .NET es más s imple y rápido pudiendo acceder
a cualquier elemento de manera fácil, debido a las nuevas caracterís ticas de
Adminis tración de ventanas , tales como:
Auto Ocultar: Es ta caracterís tica es nueva en Vis ual Studio .NET y permite
ocultar una ventana permitiendo liberar es pacio en el IDE, para mos trar
nuevamente la ventana s olo hay que ubicar el mous e cerca del nombre de la
ventana que aparece en una ficha.
Ventanas Acoplables: Al igual que Vis ual Bas ic 6, es ta nueva vers ión permite
acoplar ventanas las cuales es tarán fijas en el IDE. Podemos elegir s i una
ventana s e va a “Auto Ocultar” o s i s e va a “Acoplar”. Al acoplar la ventana
tendremos la pos ibilidad de ver s iempre s u contenido.
15 de 197
Fichas de Documentos: En la vers ión anterior de Vis ual Studio el trabajo con
varios documentos era tedios o por que para acceder a un documento abierto (por
ejemplo un módulo de formulario) había que hacerlo mediante el menú “Window”
o dando clic en el botón “View Code” o doble clic s obre el nombre del objeto.
Ahora el acces o es muy rápido a través de las fichas que hay en la parte s uperior
del Editor.
Todas es tas nuevas caracterís ticas hacen que el trabajo del des arrollador s ea más
productivo, centrándos e en la lógica de la aplicación y no en el mantenimiento de és ta
ya que es más fácil al utilizar las nuevas caracterís ticas de Adminis tración de
Ventanas , anteriormente comentadas .
Diseñadores
La mayoría de dis eñadores s e habilitan al elegir una plantilla de Vis ual Studio .NET y
cas i todos generan código al dis eñar controles s obre el contenedor res pectivo;
caracterís tica totalmente dis tinta a la forma de trabajo en Vis ual Bas ic 6, que ocultaba
el código generado por el dis eñador.
16 de 197
Entre los dis eñadores que trae Vis ual S tudio .NET tenemos :
Web Service Designer: Sirve para dis eñar s ervicios Web y es mos trado al elegir
una plantilla “Web Service”, también trabaja con los controles para Windows ,
componentes , etc.
Exis ten más dis eñadores , pero que lo trataremos en la categoría de herramientas de
datos , debido al tipo de trabajo que realizan con datos , el cual s e trata como tema
s iguiente.
Herramientas de Datos
Si s e quiere realizar un trabajo rápido con datos , tal como modificar la es tructura de la
Bas e de Datos , crear tablas , cons ultas , procedimientos almacenados , etc., exis ten
herramientas que permiten realizar es ta labor reduciendo enormemente el proces o de
des arrollo en el cas o de hacers e por otros medios .
17 de 197
Server Explorer: Sin duda es una de las principales herramientas de Vis ual
Studio .NET y no s olo para acceder a datos s ino para mos trar y adminis trar los
diferentes s ervidores o recurs os del s is tema, tales como Bas e de Datos ,
Servicios Web, Aplicaciones COM+, etc. Con s olo arras trar el objeto és te puede
s er us ado en una aplicación. También s e tratará con mayor detalle en el módulo
de acces o a datos .
Query Designer: Es un Dis eñador que permite crear Cons ultas SQL de manera
s encilla arras trando tablas o cons ultas s obre és te y eligiendo los campos que s e
verán en la cons ulta de datos , también s e puede realizar filtros o es pecificar
criterios de s elección. Además no s olo s e pueden cons truir cons ultas Select s ino
también s e pueden crear cons ultas Ins ert, Update o Delete, etc.
DataBase Project: Es un tipo de plantilla que s irve para trabajar con una Bas e
de Datos , para lo cual debe exis tir una conexión a un origen de datos , es te tipo
de proyecto da la pos ibilidad de crear y modificar s cripts de creación de tablas ,
cons ultas , vis tas , des encadenantes , procedimientos almacenados , etc.
Editor de Script: Uno de las principales herramientas para trabajar con bas e de
datos remotas como SQL Server, Oracle, etc, es utilizar el editor de Scripts que
permite crear tablas , cons ultas , vis tas , etc. Mos trando con colores las s entencias
o palabras res ervadas del lenguaje Trans act-SQL.
Como s e habrá dado cuenta muchas herramientas de acces o a datos de Vis ual Bas ic 6
18 de 197
han s ido eliminadas , tales como: Data Environment, Data View, Data Report, y otras
más , pero en s u reemplazo exis ten las que ya hemos mencionado.
19 de 197
Modulo 2
Visual Basic .NET
Introducción
En los módulos anteriores hemos tratado el Marco .NET y Vis ual Studio .NET, ahora
trataremos Vis ual Bas ic .NET, pero hay que remarcar que las caracterís ticas del
lenguaje dependen del Marco .NET y las herramientas s on compartidas por el IDE de
Vis ual Studio .NET
Vis ual Bas ic .NET es la vers ión 7 de és ta popular herramienta, és ta última vers ión
tiene cambios radicales , tanto en s u concepción (.NET), en el lenguaje, las
herramientas us adas , etc. Entre las nuevas caracterís ticas de Vis ual Bas ic .NET
tenemos :
Acces o a Datos us ando ADO .NET, el cual permite trabajar con DataS ets
des conectados
20 de 197
través de la s obrecarga de propiedades , métodos y funciones con el mis mo
nombre
Rees tructuración en los Tipos de Datos ; exis ten nuevos tipos de datos y s e han
modificado y eliminado ciertos tipos de datos .
Tipos de Datos
21 de 197
Double Sys tem.Double 8 bytes -1.79769313486231E308 has ta
(doble- -4.94065645841247E-324 para valores
precis ión negativos ; 4.94065645841247E-324 has ta
punto- 1.79769313486232E308 para valores
flotante) pos itivos
Integer Sys tem.Int32 4 bytes -2,147,483,648 to 2,147,483,647
Long Sys tem.Int64 8 bytes -9,223,372,036,854,775,808 has ta
(Entero 9,223,372,036,854,775,807
largo)
Object Sys tem.Object 4 bytes Cualquier tipo de dato
(clas s )
Short Sys tem.Int16 2 bytes -32,768 to 32,767
Single Sys tem.Single 4 bytes -3.402823E38 has ta -1.401298E-45 para
(s imple valores negativos ; 1.401298E-45 has ta
precis ión 3.402823E38 para valores pos itivos
punto-
flotante)
String Sys tem.String 10 bytes 0 has ta aproximadamente 2 billones de
(tamaño- (clas s ) + (2 * caracteres Unicode
variable) tamaño
cadena)
Us er-Defined (heredado des de Suma de Cada miembro de la es tructura tiene un
Type Sys tem.ValueType) tamaños rango determinado, es decir pueden tener
(es tructura) de s us s us propios tipos de datos dis tintos unos
miembros de otros
Variables
Una variable es un dato temporal en memoria que tiene un nombre, un tipo de dato, un
tiempo de vida y un alcance, los cuales lo dan la forma como s e declare és ta.
22 de 197
Declaración de Variables
A diferencia de Vis ual Bas ic 6, en VB .NET s e pueden declarar varias variables en una
s ola ins trucción y además s e puede as ignar directamente s us valores . Otra
obs ervación es que es neces ario definir el tipo de declaración y el tipo de dato (antes
s i no s e hacia s e as umía un tipo de declaración y un tipo de dato variant, que ahora no
exis te).
Exis ten varios tipos de declaración que detallamos a continuación en la s iguiente tabla:
Alcance de Variables
Para las variables declaradas a nivel de procedimiento (Dim y Static) exis te un nuevo
alcance que es a nivel de es tructura o bloque, que puede s er For – Next, If – End If, Do
– Loop, etc. Las variables definidas dentro de un bloque s olo valdrán en es te bloque.
Por defecto en VB NET es neces ario declarar las variables us adas (Option Explicit) y
también es neces ario que s e as igne el mis mo tipo de dato a la variable (Option
Strict), s i des eamos Declaración implícita (por defecto Object) y Convers ión Forzos a de
23 de 197
tipos (ForeCas t), aunque no es lo recomendable por performance, podemos
cons eguirlo de dos formas : mediante “Propiedades ” del proyecto, opción “Build” y
elegir “Off” en las lis tas de “Option Explicit” y Option Strict” o mediante declaración al
inicio de todo el código:
Arrays
El array puede tener uno o más dimens iones (has ta 60) y cada dimens ión tiene un
límite inferior que s iempre es 0 y un límite s uperior que es equivalente al tamaño de la
dimens ión del array menos 1. Es ta caracterís tica es dis tinta que en la vers ión anterior,
en donde el límite inferior del array podía empezar en cualquier número.
La clas e bas e .NET de donde s e heredan los array es “Array” y pertenece al s iguiente
NameSpace: System.Array.
Declaración de Arrays
Otra diferencia es que no exis te la s entencia Option Bas e que haga que el límite
inferior del array empiece en 0 o en 1, és te s iempre empezará en 0 e irá has ta n-1.
Sintaxis:
24 de 197
Ejemplos:
Redimensionando Arrays
Una vez definido la dimens ión de un array, és te puede modificars e us ando la s entencia
ReDim, s iempre y cuando el array haya s ido declarado como dinámico (con Dim).
Sintaxis:
Ejemplo:
Redim Arreglo(5)
For I = 0 To Ubound(Arreglo)
Arreglo(I) = I
Next I
25 de 197
Procedimientos
Dos caracterís ticas nuevas de los procedimientos , incorporadas en es ta vers ión s on:
Declaración de un Procedimiento
Subrutina:
<Sentencia>
[Exit Sub]
End Sub
Función:
26 de 197
[Public ¦ Private ¦ Friend] Function <Nombre>(<Parámetros >) As <Tipo>
<Sentencia>
[Exit Function]
[<Nombre>=<Valor> ¦ Return(Valor)]
End Function
Notas:
El tipo de argumento por defecto es ByVal (en la vers ión anterior era ByRef)
Llamada a un Procedimiento
Antes exis tía una forma de llamar a una s ubrutina y dos formas de llamar funciones (o
como s ubrutina o como función, és ta última mediante paréntes is ). En cambio ahora,
exis te una s ola forma de llamar procedimientos , s ea s ubrutinas o funciones , que es
es cribiendo el nombre s eguido de paréntes is y entre és tos los parámetros (s i los hay).
Sintaxis:
27 de 197
Manejo de Threads
Threads
Un thread es la unidad bás ica para que el Sis tema Operativo pueda ejecutar un
proces o. Una aplicación (AppDomain) s iempre inicia un s olo thread, pero es te a s u vez
puede iniciar otros thread. Al proces o de ejecutar varios Thread le llamaremos
Threading.
Para comunicaciones s obre una red, s ervidor Web o Servidor de Bas e de Datos .
El us o de Threads intens ivamente dis minuye los recurs os del s is tema operativo, por
tanto s olo s e recomienda us ar en los cas os ya des critos , s ino la performance de la
aplicación dis minuirá.
Implementación de Threads
28 de 197
Start: Inicia un thread, el cual es un proces o de llamada as íncrona. Para s aber el
es tado del Thread hay que us ar las propiedades ThreadState y Is Alive.
Sleep: Ocas iona una paus a en milis egundos del bloque de ins trucciones .
Estado de un Thread
Un thread puede tener diferentes es tados en un mis mo tiempo, para s aber s u es tado
s e encuentra la propiedad ThreadState que devuelve un valor que indica el es tado
actual del thread.
Acción Estado de
Transición
Otro thread llama a Thread.Start Unchanged
El thread inicia s u ejecución Running
El thread llama a Thread.Sleep WaitSleepJoin
El thread llama a Monitor. Es pera en otro objeto WaitSleepJoin
El thread llama a Thread.Join en otro thread WaitSleepJoin
Otro thread lalma a Thread.Sus pend Sus pendReques ted
El thread res ponde a un requerimiento de Sus pended
Thread.Sus pend
29 de 197
Otro thread llama a Thread.Res ume Running
Otro thread llama a Thread.Interrupt Running
Otro thread llama a Thread.Abort AbortReques ted
El thread res ponde a Thread.Abort Aborted
Depuración
En Vis ual Studio .NET, exis te un mis mo depurador para Vis ual Bas ic .NET y C# (código
adminis trado), el cual tiene las s iguientes mejoras :
30 de 197
Depurar a través de Diferentes Lenguajes: Se puede depurar aplicaciones
es critas en diferentes lenguajes que s on parte de una mis ma s olución, por
ejemplo una aplicación cliente para la interface de us uario es crita en Vis ual Bas ic
o C# y una aplicación s ervidor es crita en Vis ual C++.
Depuración de Aplicaciones Multi Thread: Una nueva caracterís tica de Vis ual
Bas ic es el s oporte de aplicaciones multi thread, para lo cual s e dis pone de la
Ventana de Threads en donde s e mues tra los threads que s e encuentran en
ejecución.
Para realizar la Depuración s e dis pone de dos tipos de herramientas , que s on:
31 de 197
Barras de Depuración
32 de 197
Aplica los cambios realizados al código s i es que es tamos en modo paus a.
33 de 197
Pres enta la ventana de Excepciones para controlar errores .
34 de 197
Mues tra la ventana de contenido de Memoria.
Pres enta la ventana del des ens amblador para fijar curs or.
35 de 197
Barra de Ubicación de Depuración: Es una nueva barra que mues tra
información de la aplicación que s e es tá depurando, tal como el nombre del
programa, el thread y el procedimiento que s e encuentra en ejecución (en la pila).
Ventanas de Depuración
En es ta nueva vers ión de Vis ual Bas ic exis ten alrededor de 17 ventanas de depuración,
entre las cuales veremos algunas :
36 de 197
Figura 2.4: Ventana Breakpoints
37 de 197
Figura 2.5: Ventana Autos
38 de 197
Ventana Watch: Ins pecciona una variable o expres ión previamente definida.
También permite añadir una expres ión de anális is , modificar s us valores y
eliminarla.
39 de 197
Figura 2.8: Ventana Watch
40 de 197
Ventana Threads: Mues tra todos los threads que s e encuentran actualmente en
ejecución mientras s e es tá depurando la aplicación, pres entando información de
s u código, nombre, ubicación, prioridad y s i s e encuentra s us pendido o no.
41 de 197
Figura 2.11: Ventana Threads
42 de 197
Control de Excepciones
Durante el des arrollo y ejecución de toda aplicación pueden pres entars e diferentes
tipos de errores , los cuales impiden el normal funcionamiento de la aplicación. A es tos
errores s e les llama Excepciones .
Tipos de Errores
Vis ual Bas ic notifica de cualquier error de s intaxis mos trando una marca de
s ubrayado azul (por defecto) con un comentario indicando la caus a del error.
43 de 197
que fuerce a declarar variables y evitar expres iones inválidas .
Errores Lógicos: Ocurren una vez us ada la aplicación y cons is te en res ultados
ines perados o no des eados ; por ejemplo una función que debe devolver el s ueldo
neto es tá devolviendo un valor de cero o negativo, o una s ubrutina que debe
eliminar un archivo temporal no lo es tá borrando.
También podemos dis minuir errores o excepciones de tipos de datos no des eados
us ando la s entencia Option Strict que evita la convers ión forzos a y verifica que el
tipo de dato as ignado s ea del mis mo tipo que la variable o función, o que un
parámetro pas ado s ea del mis mo tipo, etc.
44 de 197
Formas de Controlar Excepciones
Exis ten dos formas de controlar errores o excepciones en Vis ual Bas ic .NET:
Es la forma como s e controla errores en las vers iones anteriores a Vis ual Bas ic
.NET y cons is te en el us o de etiquetas , es decir recurrir a la programación
etiquetada, cuando ocurre algún error toma el control el código que s e encuentra a
continuación de la etiqueta.
Exis ten varias s intaxis o formas de us ar la s entencia On Error, tal como s e define:
3. On Error GoTo –1: Des habilita cualquier error o excepción que ocurra en
cualquier línea del procedimiento actual, configurando es te a Nothing.
Inicio Procedimiento()
45 de 197
Exit Sub
<Etiqueta>:
Fin Procedimiento
Resume Next: Regres a el flujo a la s iguiente ins trucción des pués de la que
produjo el error.
46 de 197
Control Estructurado: Es la forma mas recomendable de controlar errores y es
una nueva caracterís tica de Vis ual Bas ic .NET; s e implementa us ando la
es tructura Try..Catch..Finally.
Inicio Procedimiento()
Try
[Exit Try]
[Exit Try]
[Exit Try]
[Exit Try]
Finally
End Try
Fin Procedimiento
47 de 197
que es del Tipo de Dato Exception (nombre de la clas e) o una clas e derivada de
és ta, la cual contiene información s obre el error ocurrido, tales como s u número,
des cripción, origen, etc.
48 de 197
Opciones de Control de Excepciones
Exis ten 2 momentos en que s e pueden controlar las excepciones que s on:
49 de 197
Ambos momentos tienen 3 opciones o formas de control, que s on:
Break into the debugger: Para y mues tra el depurador con la línea donde
ocurrió el error en tiempo de ejecución.
50 de 197
Laboratorio 3:
El pres ente laboratorio tiene como objetivo conocer el Entorno de Vis ual Studio .NET y
us ar algunas caracterís ticas nuevas del Lenguaje Vis ual Bas ic .NET, as í como
implementar Multi Threads y Controlar Excepciones .
Duración: 20 minutos
Cargue Vis ual Studio .NET, aparecerá la pagina de inicio, en ella elegir la opción
“Get Started” y luego elegir “Create New Project”, obs erve los diferentes tipos de
proyectos y s us res pectivas plantillas .
Elegir un tipo de proyecto “Vis ual Bas ic” y una plantilla de “Aplicación Windows ”,
s eleccionar como ubicación la carpeta “C:\VBNET\Labs ” y como nombre ingres e
“Lab03_1”.
Obs erve el IDE de Vis ual Studio .NET cuando s e trata de una aplicación para
Windows . ¿Qué ventanas s on nuevas en es ta vers ión?. Luego, pruebe la
caracterís tica de “Auto Ocultar” de las ventanas y la ayuda dinámica.
51 de 197
nombre “frmDatos .vb”.
Realizar el dis eño del formulario s imilar al de la figura 1.18, ingres ando como
prefijo de la propiedad “Name” de las etiquetas las iniciales “lbl”, para los textos
“txt” y para los botones “btn”, s eguido del nombre que generalmente es s imilar
al contenido de la propiedad “Text”.
Des pués de realizar el dis eño y configurar las res pectivas propiedades de los
objetos , vis ualice el código del formulario. Obs erve las nuevas caracterís ticas del
Lenguaje y notes la diferencias entre es ta vers ión y la anterior.
52 de 197
Figura 2.15: Diseño del formulario frmDatos
Module Modulo
End Function
As String
53 de 197
NTotal = +1
Suma = +Pro
NAprobados = +1
Return ("Aprobado")
Els e
NDes aprobados = +1
End If
End Function
End Module
Par = Convert.ToByte(txtParcial.Text)
Fin = Convert.ToByte(txtFinal.Text)
txtCondicion.Text = Calcular_Condicion(Pro)
End Sub
Dim X As Control
54 de 197
For Each X In Me.Controls
Next
txtNombre.Focus ()
End Sub
X.ShowDialog()
End Sub
Me.Clos e
End Sub
55 de 197
Ingres ar al código del formulario “frmInforme” y proceder a es cribir código en el
evento “Load” para que s e mues tre las es tadís ticas de los alumnos :
txtTotal.Text = NTotal.ToString
End Sub
Me.Clos e()
End Sub
End
End Sub
Grabar y ejecutar la aplicación; para probar ingres ar como mínimo los datos de
dos alumnos , mos trar el informe y finalizar.
Finalmente, ingres e a la carpeta “bin” de “Lab01_1” y obs erve dos archivos : uno
ejecutable (extens ión exe) y otro archivo intermedio (extens ión pdb), ¿Cuál de
56 de 197
es tos es conocido como As s emblie?.
Duración: 15 minutos
Ingres e a Vis ual Studio .NET y del menú “File” elegir “New” y luego “Project” o
s implemente puls ar [Ctrl] + [N], luego elegir un tipo de proyecto “Vis ual Bas ic” y
una plantilla de “Aplicación Windows ”, s eleccionar como ubicación la carpeta
“C:\VBNET\Labs ” y como nombre ingres ar “Lab03_2”.
Realizar el dis eño del formulario s imilar al pres entado aquí abajo:
57 de 197
Declarar una variable llamada Hilo de tipo thread y definir una s ubrutina que lea el
archivo de texto cuya ruta y nombre es tá es pecificado en el cuadro de texto, es ta
rutina us a Try..Catch..Finally para controlar errores en tiempo de ejecución.
Sub LeerArchivo()
Try
Do Until Is Nothing(Linea)
Linea = Flujo.ReadLine
+ Chr(10)
Loop
Catch X As IO.IOException
58 de 197
txtNombre.Clear()
Exit Sub
End Try
Flujo.Clos e()
btnContinuar.Enabled = Fals e
btnCancelar.Enabled = Fals e
End Sub
End Sub
Hilo.Start()
btnCancelar.Enabled = True
End Sub
Hilo.Abort()
btnLeer.Enabled = Fals e
btnCancelar.Enabled = Fals e
59 de 197
End Sub
txtNombre.Clear()
txtArchivo.Clear()
txtNombre.Focus ()
End Sub
Hilo.Sus pend()
btnLeer.Enabled = Fals e
btnContinuar.Enabled = True
btnCancelar.Enabled = Fals e
End Sub
Hilo.Res ume()
End Sub
Me.Clos e()
End Sub
60 de 197
Módulo 3
Creando Aplicaciones para
Windows
Usando Windows Forms
Introducción
Windows es una clas e bas e del Marco .NET us ada para crear aplicaciones que correrán
s obre Windows , es ta s e encuentra dis ponible al elegir en Vis ual Bas ic la plantilla
“Windows Application”.
61 de 197
Para ilus trar mejor la funcionalidad que podemos obtener de Windows tenemos la
figura 4.1, que res ume los principales objetos us ados en Windows , para lo cual s e
parte de la clas e bas e llamada “Sys tem”, luego s e mues tran algunos de los objetos
de la clas e “Drawing” y de la clas e “WinForms ” anteriormente comentadas .
Objeto Formulario
62 de 197
El objeto Formulario es el contenedor principal de toda aplicación para Windows
y s e encuentra en el s iguiente NameSpace:
“ System.Windows.Forms.Form”
En Vis ual Studio .NET el formulario ha s ufrido muchos cambios , tanto en propiedades ,
métodos y eventos , tal como s e mues tra en los s iguientes cuadros :
63 de 197
Propiedades
Propiedad Descripción
Autos croll Es una nueva propiedad que permite des plazars e
por el formulario a través de una barra s i es que los
controles s obrepas an el área cliente.
64 de 197
GridSize Determina el tamaño de las rejillas que s e mues tran
en tiempo de dis eño para dis eñar controles .
StartPos ition Indica la pos ición en que aparecerá por primera vez
el formulario con res pecto a la pantalla. Tiene 5
opciones .
65 de 197
Text Antes s e llamaba Caption y permite mos trar el texto
de la barra de título en el formulario.
Métodos
Método Descripción
Activate Activa el formulario y le da el foco.
66 de 197
SetSize Configura el tamaño de la ventana en píxeles .
67 de 197
Eventos
Evento Descripción
Activated Ocurre al activars e el formulario.
68 de 197
Mous eMove Se des encadena al pas ar el mous e s obre el
formulario.
69 de 197
Uso del ToolBox
Para us ar un control del ToolBox s olo hay que elegir la ficha adecuada y luego
s eleccionar el control y arras trarlo s obre el formulario o contenedor donde s e des ea
ubicarlo, también s e puede dar doble clic s obre el control y aparecerá por defecto en la
pos ición 0,0 del formulario (antes s e ubicaba al centro de és te).
70 de 197
71 de 197
Usando Controles para Windows Forms
Control Label
Propiedades
Propiedad Descripción
Anchor Es una nueva propiedad que permite ajus tar el ancho
del control.
72 de 197
Location Indica la pos ición de la etiqueta con res pecto a s u
contenedor.
73 de 197
Métodos
Método Descripción
FindForm Devuelve el formulario en el que s e encuentra el
control.
Eventos
Evento Descripción
Click Se des encadena al dar clic con el mous e s obre la
etiqueta.
74 de 197
GotFocus Ocurre al ingres ar el foco s obre el control.
75 de 197
Control TextBox
Propiedades
Propiedad Descripción
CharacterCas ing Nueva propiedad que convierte a mayús culas o
minús culas el texto.
76 de 197
Métodos
Método Descripción
AppendText Añade texto al final del texto actual.
77 de 197
Eventos
Evento Descripción
KeyDown Ocurre al puls ar hacia abajo una tecla extendida.
Control Button
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo btn.
78 de 197
BackgroundImage Es pecifica la imagen de fondo que us ará el botón.
Métodos
Método Descripción
NotifyDefault Indica s i el botón s erá el control por defecto. Es de
tipo lógico.
Eventos
Evento Descripción
Click Se des encadena al dar clic con el mous e s obre la
etiqueta.
79 de 197
GotFocus Ocurre al ingres ar el foco s obre el botón.
Control GroupBox
Antes conocido como Frame, es un contenedor que s e utiliza para agrupar varias
opciones , que pueden s er: de opción única como los RadioButton o de opción múltiple
como los CheckBox.
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo gbx.
80 de 197
Enabled Determina s i el control es tará habilitado o
des habilitado.
81 de 197
Métodos
Método Descripción
Focus Pone el foco s obre el control.
Eventos
Evento Descripción
GotFocus Ocurre al ingres ar el foco s obre el control.
Control RadioButton
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo rbn.
82 de 197
comando).
Métodos
Método Descripción
Focus Pone el foco s obre el radiobutton.
Eventos
Evento Descripción
CheckedChanged Ocurre al cambiar la propiedad checked del
radiobutton.
83 de 197
Control CheckBox
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo chk.
Métodos
84 de 197
Método Descripción
Focus Pone el foco s obre el checkbox.
85 de 197
Eventos
Evento Descripción
CheckedChanged Ocurre al cambiar el valor de la propiedad
Checked del control.
Control ListBox
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo ls t.
86 de 197
ItemHeight Devuelve el alto en píxeles de cada elemento de la
lis ta.
ScrollAlways Vis ible Vis ualiza s iempre las 2 barras de des plazamiento.
87 de 197
Métodos
Método Descripción
FindString Devuelve el índice de un elemento bus cado en una
lis ta. Si no exis te devuelve -1 y s i exis te devuelve un
número mayor que -1.
Ins ertItem Ins erta un elemento en una cierta pos ición de la lis ta.
Eventos
Evento Descripción
DoubleClick Ocurre al dar dos veces clic s obre la lis ta.
Colección Items
Para trabajar con los elementos de una lis ta s e hace us o de la colección Items , la cual
s e detalla a continuación:
88 de 197
Propiedades
Propiedad Descripción
All Devuelve un objeto con todos los elementos de la
lis ta.
Métodos
Método Descripción
Add Añade un elemento al final de la lis ta.
Control CheckedListBox
Es un nuevo control que antes s e obtenía configurando la propiedad s tyle del control
Lis tbox a checked. Como es s imilar al control Lis tBox s olo mencionaremos las
caracterís ticas dis tintas que tiene el control CheckedLis tBox.
89 de 197
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo ckl.
Métodos
Método Descripción
GetItemChecked Devuelve true s i un cierto item ha s ido
s eleccionado o fals e s i no.
Eventos
90 de 197
Evento Descripción
ItemCheck Ocurre al s eleccionar un elemento y poner el
check en true.
Control ComboBox
91 de 197
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo cbo.
92 de 197
Métodos
Método Descripción
FindString Devuelve el índice de un elemento bus cado en el
combo. Si no exis te devuelve -1 y s i exis te devuelve
un número mayor que -1.
93 de 197
Eventos
Evento Descripción
Click Ocurre al dar clic con el mous e a un
elemento de la lis ta.
Colección Items
Propiedades
Propiedad Descripción
All Devuelve un objeto con todos los elementos del
combo.
94 de 197
Count Devuelve el número de elementos del combo.
Métodos
Método Descripción
Add Añade un elemento al final del combo.
95 de 197
Interfaces
Introducción
Des de que trabajamos en ambiente Windows , las interfaces han ido evolucionando de
acuerdo a la facilidad del us uario para acceder a los elementos de la aplicación, y
entre las principales interfaces tenemos :
SDI (Single Document Interface): Interface de Simple Documento, mues tra una
s ola ventana con un cierto documento en la aplicación; el acces o a las ventanas
es s ecuencial, por lo que no es tan recomendable. Algunas aplicaciones con SDI
s on los acces orios de Windows : Bloc de notas , Paint, Wordpad, etc.
96 de 197
Creando Aplicaciones MDI
Una aplicación MDI cons ta de 2 partes : un Formulario MDI Padre y uno o mas
Formularios MDI Hijos , la creación de ambos es muy s encilla en VB .NET y s e explica a
continuación:
Para crear un Formulario MDI padre s olo hay que configurar la propiedad
IsMDIContainer del formulario a True.
A diferencia de la vers ión anterior de Vis ual Bas ic, es ta vers ión permite colocar
cualquier control WinForm dentro del formulario MDI, pero es to hará que los
formularios hijos s e mues tren en s egundo plano, ya que en primer plano s e verán los
controles del formulario MDI padre.
Para crear un Formulario MDI hijo s olo hay que configurar la Propiedad Parent
(dis ponible s olo en tiempo de ejecución) del formulario hijo apuntando al formulario
padre y luego us ar el método Show para mos trarlo.
El s iguiente código mues tra como mos trar un formulario hijo des de un menú:
X.MDIParent = frmPadre
97 de 197
X.Show()
End Sub
A continuación s e mues tra como ordenar en Cas cada los formularios MDI hijos de un
formulario MDI Padre llamado frmPadre:
frmPadre.LayoutMDI(MDILayout.Cas cade)
Es tos 2 controles cas i s iempre trabajan juntos , uno mues tra los elementos de la
aplicación y el otro s u contenido o detalle. Antes es taban dis ponibles como controles
ActiveX, ahora en VB NET es tán dis ponibles como controles del WinForm.
Ambos controles generalmente us an imágenes para mos trar los elementos , por lo
cual primero veremos el us o del control ImageLis t para almacenar imágenes de las
vis tas .
Doble clic al control ImageLis t del ToolBox y s e mos trará en la parte inferior del
dis eñador de formularios .
98 de 197
Configurar la propiedad “Name” us ando el prefijo ils s eguido del nombre y la
propiedad “ImageSize” que define el tamaño de las imágenes : 16, 32, 48 etc.
El trabajo con el TreeView es mas s encillo con VB NET, para lo cual s e realiza los
s iguientes pas os :
99 de 197
Configurar la propiedad “Anchor” en TopBottomLeft para que al modificars e de
tamaño el formulario s e ajus te automáticamente el tamaño del TreeView.
Para crear un nodo principal dar clic en el botón “Add Root”, luego s eleccionar el
nodo y es cribir en “Label” el texto que irá en el nodo, finalmente en las lis tas
“Images ” y “Selected Imag” elegir las imágenes que s e verán en el nodo.
Para crear un nodo hijo dar clic en el botón “Add Child” y s eguir el mis mo pas o
anterior, es decir, s eleccionar el nodo hijo, es cribir el “Label” y llenar las lis tas .
100 de 197
Trabajando con el ListView
El trabajo con el Lis tView es s imilar al del TreeView, realizándos e los s iguientes pas os :
Llenar dos ImageLis t con las imágenes que s e us aran en el Lis tView para la vis ta
de Iconos grandes y otra para la vis ta de Iconos pequeños .
Dar doble clic al control Lis tView y configurar la propiedad “Name” es cribiendo el
prefijo lvw s eguido del nombre.
Seleccionar la propiedad “Lis tItems ” que es una colección y puls ar s obre el botón
, aparecerá el dialogo “Lis tItem Collection Editor”, en el cual s e añadirán items
con el botón “Add” y s e eliminarán con “Remove”.
Para añadir un Lis tItem clic en “Add” y es cribir en “Text” el texto del item, en
“Index” indicar el índice de la imagen de las lis tas . Además de llenar la colección
de Lis tItems también s e debe llenar la colección de “Columns ” para las
cabeceras de las columnas en la vis ta detalle.
101 de 197
102 de 197
Añadiendo Menús, Diálogos y Barras
Una vez creada la interface de la aplicación, es neces ario aumentar caracterís ticas que
ayuden a facilitar el trabajo al us uario; tales como: menús que permitan organizar
opciones , diálogos que faciliten la elección de archivos , colores , fuentes , etc. y barras
de herramientas que permitan elegir opciones rápidamente.
Menús
Control MainMenu
Permite crear un menú principal, para lo cual s e realizan los s iguientes pas os :
Dar doble clic s obre el control “MainMenu” del ToolBox y s e mos trarán 2 objetos :
uno en la parte s uperior del formulario que es donde s e crearán las opciones del
menú y otro en la parte inferior del dis eñador de formularios que repres enta a
todo el menú.
103 de 197
Para crear una opción del menú s olo hay que es cribir directamente donde dice
“Type Here” (propiedad Text), luego configuramos el nombre de la opción
mediante la propiedad “Name” us ando el prefijo mnu s eguido del nombre.
Si des eamos crear un acces o directo para alguna opción del menú configuramos
la propiedad “ShortCut” eligiendo un valor de la lis ta.
Des pués de crear todas las opciones del menú principal es cribir código para cada
opción, generalmente en el evento “Click”. Aunque s i des eamos realizar una
acción como mos trar un mens aje al pas ar por la opción s e puede us ar el evento
“Select”.
104 de 197
Control ContextMenu
Se us a para crear un menú contextual, para lo cual s e realizan los s iguientes pas os :
Dar doble clic s obre el control “ContextMenu” del ToolBox y s e mos trarán 2
objetos : uno en la parte s uperior del formulario que es donde s e crearán las
opciones del menú y otro en la parte inferior del dis eñador de formularios que
repres enta a todo el menú contextual.
Finalmente el menú contextual debe mos trars e al dar clic derecho s obre un cierto
objeto (generalmente un control); antes s e cons eguía es to programando en el
evento Mous eDown del objeto; ahora s olo configuramos la propiedad
“ContextMenu” del objeto as ignándole el objeto menú contextual.
Diálogos
Propiedades
Propiedad Descripción
105 de 197
Name Para el OpenFileDialog generalmente us aremos el
prefijo odg.
InitialDirectory Mues tra un cierto directorio inicial para los archivos del
diálogo.
106 de 197
Multis elect S olo para el diálogo de Abrir. Determina s i s e pueden
s eleccionar varios archivos a la hora de abrir.
Métodos
Método Descripción
OpenFile Devuelve un Stream indicando el archivo abierto en el
diálogo de abrir o grabado en el diálogo de guardar.
107 de 197
ShowDialog Mues tra el diálogo de archivo, s ea de abrir o de
guardar.
Eventos
Evento Descripción
108 de 197
Control FontDialog
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo fdg.
109 de 197
ShowColor Indica s i s e mos trará el color elegido del diálogo.
Métodos
Método Descripción
Eventos
Evento Descripción
110 de 197
Control ColorDialog
Propiedades
Propiedad Descripción
Name Generalmente us aremos el prefijo cdg.
Métodos
Método Descripción
111 de 197
Eventos
Evento Descripción
HelpReques ted Ocurre al dar clic s obre el botón de ayuda del diálogo
de color.
112 de 197
Barras
Las Barras s on muy importantes en una aplicación ya que permiten mos trar algunos
acces os directos , mos trar el es tado en que s e encuentra la aplicación, etc.
Control ToolBar
Sirve para crear una Barra de Herramientas , para lo cual s e realizan los s iguientes
pas os :
Para crear un botón dar clic en el botón “Add”, luego modificar las propiedades
“ImageIndex” para indicar el índice de la imagen a mos trar, opcionalmente en
“ToolTipText” es cribir un comentario y en “Text” es cribir un título.
113 de 197
114 de 197
Control StatusBar
Se us a para crear una Barra de Es tado, para lo cual s e realizan los s iguientes pas os :
Dar doble clic al control Status Bar y configurar la propiedad “Name” es cribiendo
el prefijo s br s eguido del nombre.
Para crear un panel dar clic en el botón “Add”, luego modificar s us propiedades ,
tales como: “Aligment”, “BorderStyle”, “Icon”, “Style”, “Text”, “ToolTipText” y
“Width”
115 de 197
Nota: En es ta vers ión de Vis ual Bas ic los paneles no traen una propiedad que permita
mos trar automáticamente el es tado de las teclas Caps Lock, NumLock, o que mues tre
la fecha u hora, etc.
116 de 197
Laboratorio 3:
El pres ente laboratorio tiene como objetivo trabajar con aplicaciones para Windows ,
us ando controles “Windows Forms ” y añadiendo caracterís ticas como barras de
herramientas , barras de es tado, diálogos , etc. Es te laboratorio es tá dividido en 2
ejercicios que tienen una duración aproximada de 50 minutos.
Duración: 20 minutos
Elegir un nuevo proyecto “Vis ual Bas ic” y una plantilla de “Aplicación Windows ”,
s eleccionar en ubicación la carpeta “C:\VBNET\Labs ” y como nombre es cribir
“Lab04_1”.
Vamos a crear una aplicación de tipo Proforma, que calcule el precio a pagar por
un Computador eligiendo las partes bás icas y opcionalmente s us acces orios ;
para es to, el nombre del formulario s erá “frmProforma.vb”.
117 de 197
118 de 197
Figura 3.9: Diseño de la segunda ficha de frmProforma
Nota: Los “GroupBox” de lectoras y los “Lis tBox” es tán des habilitados .
119 de 197
120 de 197
Luego de realizar el dis eño y configurar las propiedades de los controles ; lo
primero que haremos es es cribir una rutina que permita llenar el combo y las
lis tas , de la s iguiente forma:
End With
With ls tMemoria.Items
.Add("32 Mb")
.Add("64 Mb")
.Add("128 Mb")
End With
.Add("10 Gb")
.Add("20 Gb")
.Add("30 Gb")
End With
End With
With ls tScanner.Items
121 de 197
.Add("Pequeño")
.Add("Mediano")
.Add("Grande")
End With
End Sub
Llenar_Lis tas ()
End Sub
Cas e 0
Cas e 1
Cas e 2
Cas e 3
End Select
122 de 197
End Sub
Cas e 0
txtPrecioMemoria.Text = "30"
Cas e 1
txtPrecioMemoria.Text = "50"
Cas e 2
txtPrecioMemoria.Text = "70"
End Select
End Sub
Cas e 0
Cas e 1
Cas e 2
End Select
End Sub
También s e debe realizar lo mis mo al elegir una opción del grupo de botones ,
tanto del monitor como del teclado:
txtPrecioMonitor.Text = "150"
End Sub
123 de 197
Public Sub rbnMonitor15_Click(ByVal s ender As Object, …)
txtPrecioMonitor.Text = "200"
End Sub
txtPrecioTeclado.Text = "15"
End Sub
txtPrecioTeclado.Text = "30"
End Sub
Programamos la s egunda ficha de “Acces orios ”, iniciando por la cas illa de lectora
de dis co, para que al elegir es te acces orio s e habilite s us opciones (ya que las
des habilitamos en dis eño) y al elegir un modelo s e mues tre s u precio:
End Sub
End Sub
End Sub
End Sub
124 de 197
De manera s imilar, lo hacemos con la lectora de CD ROM:
gbxLectoraCD.Enabled = chkLectoraCD.Checked
End Sub
txtPrecioLectoraCD.Text = "40"
End Sub
txtPrecioLectoraCD.Text = "50"
End Sub
txtPrecioLectoraCD.Text = "70"
End Sub
End Sub
ls tImpres ora.SelectedIndexChanged
Cas e 0
125 de 197
Cas e 1
Cas e 2
End Select
End Sub
ls tScanner.Enabled = chkScanner.Checked
End Sub
Cas e 0
txtPrecioScanner.Text = "100"
Cas e 1
txtPrecioScanner.Text = "200"
Cas e 2
txtPrecioScanner.Text = "400"
End Select
End Sub
126 de 197
PrePro = txtPrecioProces ador.Text.ToInt16
PreMem = txtPrecioMemoria.Text.ToInt16
PreMon = txtPrecioMonitor.Text.ToInt16
PreTec = txtPrecioTeclado.Text.ToInt16
PreLCD = txtPrecioLectoraCD.Text.ToInt16
txtTotalVenta.Text = TotVen.ToString
txtTotalIGV.Text = TotIGV.ToString
txtTotalPagar.Text = TotPag.ToString
End Sub
Dim X As Control
X.Text = ""
End If
127 de 197
Next
End Sub
End
End Sub
Duración: 30 minutos
Es tando en Vis ual S tudio .NET, elegir un nuevo proyecto de “Vis ual Bas ic” y una
plantilla de “Aplicación Windows ”, s eleccionar como ubicación la carpeta
“C:\VBNET\Labs ” y como nombre ingres ar “Lab04_2”.
128 de 197
También neces itamos añadir diálogos de abrir, guardar, fuente y colores , y una
lis ta de imágenes para almacenar las figuras de los botones de la barra de
herramientas .
129 de 197
Seguidamente, añadir otro formulario colocándole como nombre
“frmDocumento.vb” y luego añadirle un menú contextual llamado “mnuPopup” con
3 opciones (Copiar, Cortar y Pegar) y un RichTextBox de nombre “rtbEditor” con la
propiedad “Anchor” en “All” para que s e ajus te al tamaño de la ventana al
cambiar de tamaño.
Proceder a ins ertar un módulo es tándar, donde s e defina una variable que
almacene el número de documentos abiertos , tal como s igue:
Module Modulo
Public N As Byte
End Module
130 de 197
Public Sub Validar_Menus _Boton(ByVal Habilitado As Boolean)
mnuArchivo_Guardar.Enabled = Habilitado
mnuEdicion.Enabled = Habilitado
mnuFormato.Enabled = Habilitado
mnuVentana.Enabled = Habilitado
ToolBarButton3.Enabled = Habilitado
End Sub
mnuEdicion_Copiar.Enabled = Habilitado
mnuEdicion_Cortar.Enabled = Habilitado
ToolBarButton5.Enabled = Habilitado
ToolBarButton6.Enabled = Habilitado
End Sub
mnuEdicion_Pegar.Enabled = Habilitado
ToolBarButton7.Enabled = Habilitado
End Sub
Validar_Menus _Boton(Fals e)
Validar_Copiar_Cortar(Fals e)
Validar_Pegar(Fals e)
End Sub
Me.ActiveMDIChild.Text = Nombre
131 de 197
End Sub
Programar en el inicio del formulario la configuración inicial del editor, tal como s e
mues tra a continuación:
Iniciar_Editor()
End Sub
N += 1
X.MDIParent = Form1
X.Show()
Validar_Menus _Boton(True)
End Sub
With odgEditor
132 de 197
.Filter = "Archivo de texto enriquecido (*.rtf)|*.rtf"
mnuArchivo_Nuevo.PerformClick()
Dim X As RichTextBox = _
Me.ActiveMDIChild.ActiveControl()
X.LoadFile(.FileName)
Cambiar_Nombre(.FileName)
End If
End With
End Sub
With s dgEditor
Dim X As RichTextBox = _
Me.ActiveMDIChild.ActiveControl()
X.SaveFile(.FileName)
Cambiar_Nombre(.FileName)
End If
End With
End Sub
End
End Sub
133 de 197
Programar las opciones del menú “Edición”, tal como s igue:
ClipBoard.SetDataObject(X.SelectedText)
End Sub
ClipBoard.SetDataObject(X.SelectedText)
X.SelectedText = ""
End Sub
End If
End Sub
With cdgEditor
134 de 197
X.BackColor = .Color
End If
End With
End Sub
With fdgEditor
.ShowColor = True
X.ForeColor = .Color
End If
End With
End Sub
Para organizar la pres entación de las ventanas hijas , es cribir código para las
opciones del menú “Ventana”:
Form1.LayoutMDI(MDILayout.Cas cade)
End Sub
Form1.LayoutMDI(MDILayout.TileVertical)
End Sub
Form1.LayoutMDI(MDILayout.TileHorizontal)
End Sub
135 de 197
Public Sub mnuVentana_OrganizarI_Click(ByVal s ender As Object, …)
Form1.LayoutMDI(MDILayout.Cas cade)
End Sub
Una vez es crito el código para los menús , hacerlo para los botones de la barra de
herramientas :
Cas e 0
mnuArchivo_Nuevo.PerformClick()
Cas e 1
mnuArchivo_Abrir.PerformClick()
Cas e 2
mnuArchivo_Guardar.PerformClick()
Cas e 3
mnuEdicion_Copiar.PerformClick()
Cas e 4
mnuEdicion_Cortar.PerformClick()
Cas e 5
mnuEdicion_Pegar.PerformClick()
Cas e 6
End
End Select
End Sub
136 de 197
Para que cada vez que s e activa una ventana de documento, s e vea el nombre del
documento en el primer panel de la barra de es tado, es cribir lo s iguiente:
End Sub
Ingres ar al formulario “frmDocumento” y es cribir código para que cada vez que
s e cierre una ventana de documento s e dis minuya la variable de contador y s e
verifique que s i no hay ventanas abiertas s e inicialice el editor:
N -= 1
If N = 0 Then
X.Iniciar_Editor()
End If
End Sub
Para habilitar las opciones del menú y los botones de “Edición”, es cribimos :
137 de 197
End Sub
ClipBoard.SetDataObject(rtbEditor.SelectedText)
End Sub
ClipBoard.SetDataObject(rtbEditor.SelectedText)
rtbEditor.SelectedText = ""
End Sub
End If
End Sub
138 de 197
Módulo 4
Creando Componentes
.NET
Vis ual Bas ic .NET tiene todas las caracterís ticas de la Programación Orientada a
Objetos (POO), ya que el Marco .NET s oporta los requerimientos para que todos los
lenguajes que trabajen con él us en POO. Es tas caracterís ticas s on:
1. Encapsulación
2. Herencia
La herencia es la caracterís tica en la cual una clas e llamada “Clas e Bas e” pas a o
hereda todas s us caracterís ticas a otra llamada “Clas e Derivada”, permitiendo la
total reus abilidad del código es crito en las aplicaciones . La herencia de clas es es
una nueva caracterís tica de Vis ual Bas ic .NET y no s olo es a nivel de clas es
creadas en és te lenguaje s ino a través de cualquier lenguaje del Marco .NET.
3. Polimosfismo
Otra caracterís tica interes ante de la POO es el polimorfis mo, en el cas o de Vis ual
Bas ic .NET és te s e puede crear cuando en una clas e derivada s e implementa de
manera dis tinta un método heredado de la clas e bas e. Es decir, podemos tener un
mis mo método con dos comportamientos dis tintos (códigos dis tintos ) de acuerdo al
tipo de objeto, que puede s er creado de la clas e bas e o de la derivada.
139 de 197
(POO) mezcladas con la facilidad de us o de la Programación Orientada a Componentes
(POC) dan como res ultado la creación de aplicaciones poderos as y con un bajo cos to
de mantenimiento.
Sin duda, la reus abilidad y encaps ulación ofrecida por la tecnología COM bas ada en
componentes s e ve incrementada por la herencia de clas es y el polimorfis mo ofrecida
por la tecnología .NET orientada a objetos ; lográndos e una verdadera integración entre
aplicaciones .
Para finalizar es ta introducción a los componentes .NET, la otra gran ventaja con
res pecto a COM es la dis tribución de componentes , que en es te último era una
pes adilla debido había que regis trar componentes y lidiar con los problemas de
compatibilidad de vers iones ; en cambio con .NET los componentes no s e regis tran y s u
dis tribución es automática con s olo copiar y pegar la aplicación.
Todos los componentes es tán formados por clas es y es tas a s u vez s e componen de
elementos o miembros , los cuales trataremos en es te capítulo. Para ilus trar mejor
tenemos el s iguiente gráfico.
A diferencia de Vis ual Bas ic 6 en donde las clas es podían tener s olo propiedades ,
métodos , eventos y cons tantes enumeradas ; en Vis ual Bas ic .NET las clas es pueden
tener campos , delegados , cons tructores y des tructores . Además pueda s er que una
140 de 197
clas e herede de otra que es te dentro del componente o en otro componente .NET.
Clase
Una clas e es la plantilla para crear el objeto, es aquí donde s e definen las partes del
objeto: datos (propiedades , cons tantes , enumeraciones , campos ) y procedimientos
que operan s obre los datos (métodos ).
La clas e define un nuevo tipo de datos que res ulta de la abs tracción de algún elemento
en la aplicación, por tanto, es neces ario dis eñar bien la aplicación antes de crear la
clas e, ya que es ta s olo implementa el dis eño de objetos previamente realizado.
A diferencia de Vis ual Bas ic 6, donde el tipo de clas e es taba dado por la propiedad
“Ins tancing” de la clas e, que podía s er privada (Private), dependiente
(PublicNotCreateTable) o pública (SingleUs e, GlabalSingleUs e, MultiUs e, o
GlobalMultiUs e); en VB .NET no exis te propiedades para el módulo de clas e, ya que las
caracterís ticas de la clas e dependen de la forma de s u declaración.
Sintaxis:
<...>
End Class
Exis ten varias formas de declarar una clas e, que detallamos a continuación en la
s iguiente tabla:
141 de 197
Private No puede us ars e en otras clas es del componente ni
en las aplicaciones clientes .
142 de 197
Ejemplo:
Si queremos crear una aplicación de Planilla neces itamos dis eñar un componente que
manipule información del empleado, s us horas trabajadas , tardanzas , faltas , etc.
Para crear la clas e Empleado, de tal manera que pueda heredars e y utilizars e tanto
dentro del componente como en las aplicaciones clientes , definiríamos la clas e en
Vis ual Bas ic, tal como s igue:
End Clas s
Constantes
Una cons tante es un dato que permanece fijo en toda la ejecución de la aplicación, a
diferencia de la variable, cuyo valor va cambiándos e en tiempo de ejecución.
Sintaxis:
Ejemplo:
Podemos crear un par de cons tantes que almacenen el valor de las tas as de los
impues tos a la renta e impues to extraordinario de s olidaridad, para propós itos del
cálculo de des cuentos .
143 de 197
Private Cons t Tas aIRenta As Single = 0.1
Nota:
En Vis ual Bas ic .NET s i no s e define el tipo de dato de la cons tante s e as ume que es
Object, ya no Variant como en Vis ual Bas ic 6, debido a que és te tipo de dato ya no
exis te.
Campos
Un campo es una variable local para la clas e, es decir, s olo puede s er us ada
internamente por los miembros de la clas e pero no por otras clas es o por aplicaciones
clientes .
Sintaxis:
Ejemplo:
Podemos crear un par de campos que almacenen el cálculo de los impues tos a la
renta e impues to extraordinario de s olidaridad, para el total de des cuentos .
144 de 197
Enumeraciones
Una enumeración es una es tructura de datos pers onalizada que define un conjunto de
valores enteros . Por defecto, el primer dato enumerado empieza en 0, el s egundo en 1
y as í s uces ivamente, aunque es to puede cambiars e al momento de definir la
enumeración.
Sintaxis:
<Elemento1>[=<Valor1>]
<Elemento2>[=<Valor2>]
<Elemento3>[=<Valor3>]
<...>
End Enum
Ejemplo:
Vamos a crear dos enumeraciones , la primera que des criba los cargos de los
empleados que s e us ará des de otras clas es y aplicaciones , y la s egunda que defina
las áreas de la empres a para propós itos internos de trabajar con información del
empleado.
Auxiliar
Técnico
Ingeniero
Secretaria
145 de 197
Vendedor
End Enum
Gerencia = 100
Contabilidad = 200
Producción = 300
Ventas = 500
End Enum
Para us ar es tas enumeraciones creadas , tan s olo bas ta declarar una variable de es tos
tipos y as ignarle un valor definido, por ejemplo, para el cas o anterior s ería como
s igue:
146 de 197
Propiedades
Una propiedad es una caracterís tica del objeto que tiene información s obre un cierto
atributo de és te como por ejemplo s u nombre, des cripción, etc. Las propiedades s on
métodos que s e trabajan como s i fues en campos , con la diferencia que el campo es
interno s olo para us o de la clas e, en cambio las propiedades s e us an fuera de la
clas e.
A diferencia de la vers ión anterior de Vis ual Bas ic que exis tían 3 es tructuras para
declarar una propiedad (Property Get, Let, y Set), ahora, en Vis ual Bas ic .NET s olo
exis te una es tructura llamada Property donde internamente s e define s i la propiedad
es de lectura (Get) y/o es critura (Set), tal como s e mues tra debajo.
Sintaxis:
[[ReadOnly] Get
End Get]
End Set]
End Property
Exis ten muchas formas de declarar una propiedad, que explicamos en la s gte tabla:
Declaración Uso
Default Indica que la propiedad es por defecto (no es
neces ario es cribirla)
147 de 197
Public Puede s er us ada des de cualquier clas e o aplicación.
148 de 197
NotOverridable Indica que la propiedad no puede s er s obres crita por
nadie en ninguna clas e derivada.
Ejemplo:
Para nues tra clas e Empleado, podemos implementar las propiedades código, nombre
y bás ico del empleado, de tal manera que s e puedan leer y es cribir en cualquier parte.
Get
Codigo = mvarCodigo
End Get
mvarCodigo = Value
149 de 197
End Set
End Property
Get
Nombre = mvarNombre
End Get
mvarNombre = Value
End Set
End Property
Get
Sueldo = mvarSueldo
End Get
mvarSueldo = Value
End Set
End Property
Métodos
150 de 197
En Vis ual Bas ic .NET todos los miembros de una clas e (propiedades , eventos ,
cons tructores , des tructores , etc.) s on en realidad métodos ; claro, es tos últimos s on
métodos es peciales .
Sintaxis:
End Property
También hay que recordar que s i el método es una función s iempre s e deberá
devolver un valor, que s e puede hacer de dos formas : de manera clás ica as ignando un
valor al nombre de la función o de una nueva forma es cribiendo la s entencia return y el
valor.
Ejemplo:
En nues tro ejemplo de Empleado, podemos implementar dos métodos públicos , uno
que permita as ignar valores a las propiedades creadas : código, nombre y s ueldo del
empleado y otro método que permita actualizar el s ueldo.
mvarCodigo = vCodigo
151 de 197
mvarNombre = vNombre
mvarSueldo = vSueldo
End Sub
mvarSueldo = vNuevoSueldo
End Sub
152 de 197
Eventos
Es fácil entender eventos as ociados a objetos vis uales como los controles , por
ejemplo en el objeto “Button” s e tiene el evento “Click” que s e des encadena al
s eleccionar el botón, el evento “Mous eMove” que ocurre al pas ar el mous e por el
botón, y as í hay muchos eventos as ociados al objeto botón; pero, cuando trabajamos
con clas es , los eventos s on más abs tractos y un poco más difíciles de entender, ya
que podía confundirs e con los métodos .
Para crear un evento en la clas e primero declare l evento con la s entencia “Event” y
luego llámelo con “Rais eEvent”, tal como s e mues tra en la s intaxis .
Declaración Sintaxis:
Declaración Llamada:
153 de 197
Ejemplo:
Crear dos eventos que nos informen cuando el s ueldo es bajo o alto; para nues tra
realidad un s ueldo s erá bajo cuando es menor a 500 y alto cuando s ea mayor a 3000.
End If
End Sub
154 de 197
Constructores y Destructores
Constructores
Un cons tructor es un método que s e us a para inicializar caracterís ticas del objeto.
Todas las clas es de Vis ual Bas ic .NET tienen un cons tructor por defecto que es el
método “New”, pero s e pueden agregar varios cons tructores “New” diferenciándos e
por el número de parámetros .
Sintaxis:
End Sub
End Sub
End Sub
End Sub
Nota:
Es requis ito indis pens able es cribir los métodos cons tructores al inicio de la clas e, de
lo contrario no funcionarían.
Ejemplo:
155 de 197
Continuando con nues tro ejemplo de la clas e “Empleado” podemos crear 4
cons tructores que permitan crear de cuatro maneras dis tintas un objeto de tipo
empleado.
End Sub
mvarCodigo = vCodigo
End Sub
mvarCodigo = vCodigo
mvarNombre = vNombre
End Sub
mvarCodigo = vCodigo
mvarNombre = vNombre
mvarSueldo = vSueldo
End Sub
156 de 197
Destructores
Un des tructor es un método que s e us a para limpiar caracterís ticas del objeto antes
que s ea des truido y liberado de la memoria. Por ejemplo, s i tenemos una clas e que
accede a datos y que abre una conexión hacia una bas e de datos par crear un Datas et,
entonces recitamos un des tructor que permita cerrar el Datas et y la conexión antes de
des truir el objeto que apunta a dicha clas e.
El FrameWork .NET s olo provee de des tructores a Vis ual C#, en cambio, en Vis ual
Bas ic :NET no exis te un método es pecial para crear des tructores ; en vez de ello s e
crea un método cualquiera que realice la labor de iniciar variables , liberar recurs os ,
etc.
Sintaxis:
End Sub
Ejemplo:
Para la clas e “Empleado” podemos crear un des tructor llamado “Finalizar” que permita
liberar las variables us adas por las propiedades para almacenar s us valores .
mvarCodigo = Nothing
mvarNombre = Nothing
mvarSueldo = Nothing
End Sub
157 de 197
Des pués de ver los elementos de una clas e, es momento de crear Componentes .NET
los cuales también s on conocidos como “Librería de Clas es ”, para lo cual exis ten
varias etapas que detallamos a continuación.
158 de 197
Inmediatamente aparecerá una clas e llamada “Clas s 1”, proceder a cambiar de
nombre fís ico y lógico, por ejemplo ponerle como nombre “Empleado”.
Por defecto toda librería trae una clas e, pero s i queremos crear mas clas e realizamos
lo s iguiente:
Es cribimos el nombre fís ico de la clas e, es te a s u vez s erá por defecto el nombre
lógico y damos clic en “Open”.
159 de 197
1. Por defecto aparecerá la s iguiente es tructura:
End Clas s
2. Dependiendo del alcance que queramos que tenga el objeto s e puede modificar el
tipo de declaración “Public” a una de las vis tas anteriormente, tales como:
“Private”, “Protected”, “Friend”, “Shadows ”, etc.
160 de 197
Creando Propiedades, Métodos, Eventos
Get
Sueldo = mvarSueldo
End Get
mvarSueldo = Value
End Set
End Property
4. Añadiendo un método:
mvarSueldo = vNuevoSueldo
End Sub
5. Añadiendo eventos :
161 de 197
Public Event SueldoAlto()
6. Llamando eventos :
Sub ChequearSueldo()
End If
End Sub
mvarSueldo = vNuevoSueldo
ChequearSueldo()
End Sub
162 de 197
Probando y Usando la Librería de Clases
Vamos a as umir que s e des ea crear una aplicación cliente en Vis ual Bas ic .NET que
pruebe la librería de clas es creada, para es to neces itamos realizar lo s iguiente:
7. Del menú “File”, elegir “Add Project”, y luego s eleccionar “New Project”. Elegir una
plantilla de aplicación para Windows o Web en Vis ual Bas ic .NET
9. Para indicar que el proyecto de la aplicación es el que s e ejecuta dar clic derecho
s obre el nombre del proyecto en la ventana del “Solution Explorer” y elegir “S et
as StartUp Project”.
163 de 197
164 de 197
10. Para us ar la librería des de la aplicación creada hacer una referencia a es ta,
des de el menú “Project” eligiendo “Add Reference...”
12. Dar clic al botón “S elect” y luego “OK”; inmediatamente, aparecerá en la carpeta
“References ” del proyecto en la ventana del “Solution Explorer”.
13. Declarar una variable objeto que apunte a una clas e del componente o librería,
para lo cual exis ten 3 formas que ilus traremos con la clas e empleado:
1. Primera forma:
2. Segunda forma:
3. Tercera forma:
14. Us ar las propiedades y métodos del objeto, tal como s e mues tra en el ejemplo:
15. Si des eamos us ar los eventos , entonces tendremos que declarar la variable en la
s ección de decalaraciones generales , de la s iguiente forma:
165 de 197
Private WithEvents objEmpleado As New ACME.Empleado()
objEmpleado = Nothing
Nota:
La anterior s entencia en realidad no des truye la variable, s ino que la des activa, el
encargado de des truír definitivamente al objeto es el “Garbage Collector”.
Anteriormente, habiamos vis to como probar la librería junto con una aplicación en la
mis ma s olución, lo que permite realizar depuración pas o a pas o, pero cuando ya es tá
probada la librería no es neces ario tener el código fuente, s ino tan s olo el archivo DLL.
Para us ar la librería en cualquier aplicación s olo hay que hacer una referencia y en la
opción “Projects ” hay que s eleccionar el nombre de la DLL que s e encuentra en la
carpeta del proyecto. Des pués s e realizan los mis mos pas os que para probarla.
166 de 197
Herencia de Clases
Otra forma de herencia es a través del polimorfismo, que es una caracterís tica de la
POO que cons is te en definir una clase abstracta con propiedades y métodos que
s erán implementados de diferentes formas por otras clas es , es decir, con un mis mo
nombre de propiedad o método s e obtiene funcionalidad dis tinta de acuerdo al tipo de
objeto.
En .NET s olo exis te herencia simple y no herencia múltiple, es decir, una clas e
derivada s olo puede heredar de una clas e bas e. Haciendo una analogía, s i a la clas e
bas e le llamamos “padre” y a la clas e derivada le llamamos “hijo” diriamos que la
herencia s imple cons is te en que un “hijo” s olo puede tener un s olo “padre”, lo que
parece algo natural y coherente.
Si des eamos s imular herencia múltiple en Vis ual Bas ic .NET recurrimos a las
interfaces, que permiten definir propiedades y métodos en una clas e s in código,
luego des de una clas e s e puede implementar varias interfaces , lográndos e una
herencia múltiple pero a nivel de definición y no de código, ya que la implementación
s erá dis tinta en cada clas e.
167 de 197
Con .NET podemos implementar la herencia de cualquier clas e pública de la librería de
clas es bas e, la cual tiene una gran cantidad de clas es de diferentes tipos , tales como
Windows , Data, XML, ASP .NET, Sys tem, etc. Pero, también podemos implementar
herencia de clas es creadas por nos otros , s in importar el lenguaje en que fueron
creadas .
168 de 197
Implementando Herencia en una Clase
Para crear una herencia de clas es s e us a la ins trucción Inherits s eguida de la clas e
bas e de donde s e heredarán los miembros para la clas e actual (clas e derivada), tal
como s e mues tra debajo.
Sintaxis:
Notas:
Dos obs ervaciones importantes que hay que tener en cuenta s on:
2. Solo puede exis tir una ins trucción Inherits , ya que s olo exis te herencia s imple.
Ejemplo:
Podemos crear una clas e llamada “Vendedor” que herede de la clas e “Empleado” que
habíamos creado anteriormente, y crear dos propiedades , una llamada “Venta” y otra
llamada “Comis ion”, tal como s igue:
Inherits Empleado
Get
Venta = mvarVenta
End Get
169 de 197
Set(ByVal Value As Single)
mvarVenta = Value
End Set
End Property
Get
End Get
End Set
End Property
End Clas s
170 de 197
Sentencias para trabajar con Herencia
Para trabajar con herencia de clas es exis ten varias ins trucciones que hay que conocer
tanto a nivel de la clas e como de s us miembros que definen las caracterís ticas de la
herencia, las cuales explicamos a continuación.
Para declarar una clas e bas e exis ten varias formas que fueron vis tas en temas
anteriores , ahora afianzaremos s olo los tipos de declaraciones que pos ibilitan o limitan
el us o de herencia de una clas e bas e:
1. MustInherit
Permite crear una clas e que s olo s irva como clas e bas e, es decir, que s irva s olo
para implementar herencia en otras clas es , pero no podrá crears e objetos de es ta
clas e.
Sintaxis:
End Class
2. NotInheritable
Se us a para crear una clas e que s olo pueda crear objetos o aplicaciones clientes ,
pero que no pueda s ervir para heredars e en otra clas e.
Sintaxis:
171 de 197
End Class
Para declarar una propiedad o método en una clas e derivada o clas e que hereda de
una clas e bas e, hay que tener ciertas cons ideraciones de acuerdo al tipo de
declaración, que s e explican a continuación.
1. Overridable
Permite crear una propiedad o método que puede s er s obre es crito en una clas e
derivada. Es ta declaración s e hace en la propiedad o método de la clas e bas e.
2. Overrides
Se us a para s obre es cribir una propiedad o método que fue definido como
“Overridable” en la clas e bas e. Es ta declaración s e hace en la propiedad o método
de la clas e derivada.
172 de 197
3. NotOverridable
Impide que una propiedad o método pueda s er s obre es crito en una clas e derivada.
La definición s e realiza en la propiedad o método de la clas e bas e.
Por defecto, todas las propiedades o métodos públicos definidos en una clas e bas e
no pueden s er s obre es critos en la clas e derivada.
4. MustOverride
Permite crear una propiedad o método que s erá obligatorio s obre es cribirlo en la
clas e derivada. Es ta declaración s e realiza en la propiedad o método de la clas e
bas e que ha s ido definida como Mus tInherit.
Se puede us ar las palabras clave MyBas e y MyClas s al trabajar con herencia, tal como
s e mues tra a continuación:
1. MyBase
Es te tipo de llamada es útil cuando s e trabaja con métodos s obre es critos en una
clas e derivada y s e neces ita invocar al método de la clas e bas e que s erá s obre
es crito, tal como s e mues tra en el s iguiente ejemplo.
Ejemplo:
173 de 197
Public Clas s Vendedor
Inherits Empleado
MyBas e.CrearEmpleado(vCodigo,vNombre,vSueldo)
End Sub
End Clas s
2. MyClass
174 de 197
Polimorfismo
Exis ten dos formas de implementar el polimorfis mo en Vis ual Bas ic .NET:
Es una nueva forma de crear multiple funcionalidad para un método de una clas e
bas e que puede s er s obre es crito por otros métodos con el mis mo nombre en las
clas es derivadas .
Ejemplo:
Tomemos como cas o el ejemplo anterior donde habíamos s obre es crito el método
“CrearEmpleado” de la clas e “Empleado” modificandos e en la clas e derivada
“Vendedor” para incluir lo recibido por comis iones de ventas . Crearemos el método
llamado “Mos trarSueldo” que permita crear el empleado y mos trar cuanto gana,
us ando el polimorfis mo dependeiendo s i es vendedor o no.
vEmpleado.CrearEmpleado(vCodigo,vNombre,vSueldo)
End Sub
175 de 197
objEmpleado.CrearEmpleado(100, "Luis Dueñas ", 1000)
objVendedor.Venta=1000
objVendedor.Comis ion=0.10
End Sub
En es te ejemplo el res ultado s erá para el primer cas o el mens aje “Luis Dueñas
gana 1000” y en el s egundo cas o el mens aje “Luis Dueñas gana 1100”.
176 de 197
Laboratorio 4:
Es te laboratorio pretende ens eñar como s e trabajan con componentes en Vis ual Bas ic
.NET, primero s e verá un laboratorio de cómo crear una librería de clas es y luego
veremos como trabajar con herencia de clas es . El laboratorio 6 s e divide en dos
ejercicios que duran aproximadamente 60 minutos.
Duración: 25 minutos
Elegir un nuevo proyecto “Vis ual Bas ic” y una plantilla “Clas s Library”, s eleccionar
en ubicación la carpeta “C:\VBNET\Labs ” y como nombre es cribir
“Libreria_Clas es ”.
End Clas s
177 de 197
Private mvarStock As Integer
Get
Codigo = mvarCodigo
End Get
mvarCodigo = Value
End Set
End Property
Get
Nombre = mvarNombre
End Get
mvarNombre = Value
End Set
End Property
Get
Precio = mvarPrecio
End Get
mvarPrecio = Value
178 de 197
End Set
End Property
Get
Stock = mvarStock
End Get
mvarStock = Value
End Set
End Property
mvarCodigo = vCodigo
mvarNombre = vNombre
mvarPrecio = vPrecio
mvarStock = vStock
End Sub
If vOperacionPrecio = 1 Then
179 de 197
Els eIf vOperacionPrecio = 2 Then
End If
End Sub
If vOperacionStock = 1 Then
End If
End Sub
Del menú “File” elegimos “Add Project”, y s eleccionamos “New Project”. Elegimos
una “Aplicación para Windows ” y le damos el nombre de
“Prueba_Libreria_Clas es ”.
180 de 197
Figura 4.6: Ficha “Actualizacion” del formulario “frmProducto”
181 de 197
Des pués de realizar el dis eño y antes de es cribir código, para us ar la librería
primero debemos hacer una referencia a és ta.
Declarar e inicializar una variable objeto de tipo de la clas e producto, tal como
s igue:
objProducto.CrearProducto(txtCodigo_Ing.Text, _
txtNombre_Ing.Text, Convert.ToSingle(txtPrecio_Ing.Text), _
Convert.ToInt16(txtS tock_Ing.Text))
txtCodigo_Ing.Clear()
txtNombre_Ing.Clear()
182 de 197
txtPrecio_Ing.Clear()
txtStock_Ing.Clear()
End Sub
objProducto.ActualizarPrecio(1,
Convert.ToSingle(txtTas a.Text))
objProducto.ActualizarPrecio(2,
Convert.ToSingle(txtTas a.Text))
End If
txtTas a.Clear()
End Sub
objProducto.ActualizarStock(1,
Convert.ToInt16(txtCantidad.Text))
objProducto.ActualizarStock(2,
Convert.ToInt16(txtCantidad.Text))
End If
txtCantidad.Clear()
183 de 197
End Sub
With objProducto
txtCodigo_Con.Text = .Codigo
txtNombre_Con.Text = .Nombre
txtPrecio_Con.Text = .Precio.ToString
txtStock_Con.Text = .Stock.ToString
End With
End Sub
Duración: 35 minutos
En es te laboratorio vamos a cons truír una librería de clas es para un Ins tituto Superior
Tecnológico que permita matricular a los alumnos en un cierto curs o libre dictado por
un cierto profes or. Para lo cual realizamos los s iguientes pas os :
Elegir un nuevo proyecto “Vis ual Bas ic” y una plantilla “Clas s Library”, s eleccionar
en ubicación la carpeta “C:\VBNET\Labs ” y como nombre es cribir
“Libreria_Herencia”.
184 de 197
Private mvarNombre As String
Get
Nombre = mvarNombre
End Get
mvarNombre = Value
End Set
End Property
Get
FechaNac = mvarFechaNac
End Get
mvarFechaNac = Value
End Set
End Property
Get
Edad = mvarEdad
185 de 197
End Get
End Property
Get
Direccion = mvarDireccion
End Get
mvarDireccion = Value
End Set
End Property
mvarNombre = vNombre
mvarFechaNac = vFechaNac
mvarDireccion = vDireccion
mvarEdad = Convert.ToByte(Date.Today.Year-vFechaNac.Year)
End Sub
End Clas s
Crear la clas e “Alumno” que hereda de “Pers ona”, para lo cual añadimos una
clas e al componente; del menú “Project” elegimos “Add Clas s ...” y es cribimos
como nombre “Pers ona.vb” y “Open”. Luego es cribimos el s iguiente código:
186 de 197
Private mvarCodigo As String
Get
Codigo = mvarCodigo
End Get
mvarCodigo = Value
End Set
End Property
Get
End Get
End Set
End Property
mvarCodigo = vCodigo
187 de 197
mvarEs pecialidad = vEs pecialidad
End Sub
End Clas s
Crear la clas e “Profes or” que también hereda de “Pers ona”, para lo cual
añadimos una clas e al componente; del menú “Project” elegimos “Add Clas s ...” y
es cribimos como nombre “Profes or.vb” y “Open”. Luego es cribimos el s iguiente
código:
Get
Codigo = mvarCodigo
End Get
Set
mvarCodigo = Value
End Set
End Property
Get
Tipo = mvarTipo
End Get
Set
mvarTipo = Value
188 de 197
End Set
End Property
mvarCodigo = vCodigo
mvarTipo = vTipo
End Sub
End Clas s
Finalmente, crear la clas e “Curs o”, para lo cual añadimos una clas e al
componente; del menú “Project” elegimos “Add Clas s ...” y es cribimos como
nombre “Curs o.vb” y “Open”. Luego es cribimos el s iguiente código:
Get
Codigo = mvarCodigo
End Get
189 de 197
mvarCodigo = Value
End Set
End Property
Get
Nombre = mvarNombre
End Get
mvarNombre = Value
End Set
End Property
Get
TotalHoras = mvarTotalHoras
End Get
mvarTotalHoras = Value
End Set
End Property
Get
End Get
190 de 197
Set(ByVal Value As Single)
End Set
End Property
Get
End Get
End Property
mvarCodigo = vCodigo
mvarNombre = vNombre
mvarTotalHoras = vTotalHoras
End Sub
End Clas s
191 de 197
realizarán el ingres o de datos del alumno, el curs o y el profes or para la
matrícula, tal como s e mues tran en las figuras de abajo.
192 de 197
Figura 4.9: Ficha “Curso” del formulario “frmMatricula”
193 de 197
Para que la aplicación Windows que vamos a crear s ea la que s e ejecute dar clic
derecho al nombre del proyecto en la ventana del “Solution Explorer” y elegir “Set
as StartUp Project”.
Sub LimpiarTextos ()
txtAlumno_Codigo.Clear()
txtAlumno_Nombre.Clear()
txtAlumno_FechaNac.Clear()
txtAlumno_Direccion.Clear()
txtAlumno_Edad.Clear()
txtAlumno_Es pecialidad.Clear()
txtCurs o_Codigo.Clear()
txtCurs o_Nombre.Clear()
txtProfes or_Codigo.Clear()
txtProfes or_Nombre.Clear()
txtProfes or_FechaNac.Clear()
194 de 197
txtProfes or_Direccion.Clear()
txtProfes or_Edad.Clear()
txtProfes or_Tipo.Clear()
End Sub
Programamos el botón “Matricular” para que guarde los datos de los objetos
creados anteriormente.
objAlumno.CrearAlumno(txtAlumno_Nombre.Text, _
Convert.ToDateTime(txtAlumno_FechaNac.Text), _
txtAlumno_Direccion.Text, txtAlumno_Codigo.Text, _
txtAlumno_Es pecialidad.Text)
txtCurs o_Nombre.Text, _
Convert.ToDateTime(txtProfes or_FechaNac.Text), _
txtProfes or_Direccion.Text, _
LimpiarTextos ()
End Sub
Es cribimos código en el botón “Cons ultar” para mos trar los datos almacenados
en los objetos .
195 de 197
Private Sub btnCons ultar_Click(…) Handles btnCons ultar.Click
With objAlumno
txtAlumno_Codigo.Text = .Codigo
txtAlumno_Nombre.Text = .Nombre
txtAlumno_FechaNac.Text=Format(.FechaNac, "dd/MM/yyyy")
txtAlumno_Direccion.Text = .Direccion
txtAlumno_Edad.Text = .Edad.ToString
End With
With objCurs o
End With
With objProfes or
End With
End Sub
196 de 197
Finalmente, programamos el botón de “S alir” de la aplicación.
Me.Clos e()
End Sub
Instituto Telematic / 3
197 de 197