Está en la página 1de 13

Sistemas UNI. Instructor: V. Carlos, Segura P.

Microsoft Partner

LABORATORIO WINDOWS FORMS .NET – 3.

Derechos Reservados, solo para ser usados dentro de la


institución.
Derechos de Autor

El contenido de este laboratorio tiene todos los derechos reservados, por lo tanto no se
puede reproducir, transcribir, almacenar a un sistema de recuperación o de alteración,
asimismo la traducción a otro idioma de ninguna forma o por ningún medio mecánico,
manual, electrónico, magnético, óptico o de otro modo.

La persecución de una reproducción no autorizada tiene como


consecuencia la cárcel y/o multas.

UNIVERSIDAD NACIONAL DE INGENIERIA 1


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

3 WINDOWS FORMS

1 Declaración por Referencia e Instancia.


1.1 Creación de un Objeto Por Referencia e Instancia.

Se referencia al objeto hacia una variable:

Dim Variable as [Objeto]

Creando el objeto o Instanciandolo:

Variable = New [Objeto]

1.2 Creación de un Objeto Por Referencia e Instancia a la vez.

Se referencia e instancia a la vez:

Dim Variable as New [Objeto]

Una vez creado el objeto se puede hacer uso de sus métodos y propiedades.

Ejemplo:
Acá se muestra que el objeto solo es referenciado por lo tanto se producirá una excepción que el objeto no fue
instanciado.

Si ahora instanciamos el objeto veremos que no produce ninguna excepción.

UNIVERSIDAD NACIONAL DE INGENIERIA 2


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

1.3 Uso de Clases en .NET

Como vimos en los laboratorios anteriores, los tipos de datos se dividen en dos grupos: tipos por valor y
tipos por referencia. Los tipos por referencia realmente son clases, de la cuales debemos crear una
instancia para poder usarlas, cuando instanciamos una clase esta se crea en la parte lejana de la memoria
llamada heap, y las variables que la contienen solo hacen una referencia a la dirección de su ubicación en la
que la CLR ha almacenado el objeto recién creado.

En el .NET Framework la mayor parte a usar será una clase, la creación de formularios, la creación de
módulos, y las clases mismas etc., toda estas se grabaran con la extensión vb si usamos como lenguaje
predeterminado Visual Basic, para C# la extensión sera .cs.

Creación de Clases en .NET

1.4 Object: La clase base de todas las clases de .NET

Las clases existentes en la biblioteca de clases del .NET Framework, derivan de una clase principal llamada
object, es decir así lo indiquemos o no cualquier clase que definamos o usemos tendrá el comportamiento

Todas las clases de .NET se derivan de la clase Object, es decir, lo indiquemos o no, cualquier clase que
definamos tendrá el comportamiento heredado de esa clase. El uso de la clase Object como base del resto de
las clases de .NET es la única excepción a la herencia simple soportada por .NET, ya que de forma implícita,
todas las clases de .NET se derivan de la clase Object independientemente de que estén derivadas de
cualquier otra.

De los miembros que tiene la clase Object debemos resaltar el método ToString, este método está pensado
para devolver una representación en formato cadena de un objeto.

UNIVERSIDAD NACIONAL DE INGENIERIA 3


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

1.5 Definir una clase

En Visual Basic 2005, todo el código que queramos escribir, lo tendremos que hacer en un fichero con la
extensión .vb, dentro de ese fichero es donde escribiremos nuestro código, el cual, tal como dijimos
anteriormente siempre estará incluido dentro de una clase, aunque un fichero de código de VB puede contener
una o más clases, es decir, no está limitado a una clase por fichero.

En Visual Basic 2005 las clases se definen usando la palabra clave Class seguida del nombre de la clase, esa
definición acaba indicándolo con End Class.

1.6 Los miembros de una clase

Una clase puede contener cualquiera de estos elementos (miembros):


• Enumeraciones
• Campos
• Métodos (funciones o procedimientos)
• Propiedades
• Eventos

Aquí una breve descripción:

Los campos
Son variables usadas para mantener los datos que la clase manipulará.

Los métodos
Son las acciones que la clase puede realizar, normalmente esas acciones serán sobre los datos que
contiene. Dependiendo de que el método devuelva o no un valor, podemos usar métodos de tipo
Function o de tipo Sub respectivamente.

Las propiedades
Son las "características" de las clases y la forma de acceder "públicamente" a los datos que contiene.
Por ejemplo, podemos considerar que el nombre y los apellidos de un cliente son dos características
del cliente.

Los eventos
Son mensajes que la clase puede enviar para informar que algo está ocurriendo en la clase.

Esquema de una Clase:

Public Class Empleados

Dim Codigo As Integer


Public bEstado As Boolean
Private sCta As String

Public Property Cuenta()


Get
Return sCta
End Get
Set(ByVal value)
sCta = value

UNIVERSIDAD NACIONAL DE INGENIERIA 4


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

End Set
End Property

Public Function BuscaEMpleado(ByVal _codigo As Integer) As String


Return "Felipe Castañeda"
End Function

End Class

Uso de la clase:

1.7 Creación de Procedimientos Sobre Cargados

La sobrecarga de funciones (tanto para funciones como para procedimientos Sub), es una característica que
nos permite tener una misma función con diferentes tipos de parámetros, ya sea en número o en tipo.

Supongamos que queremos tener dos funciones (o más) que nos permitan hacer operaciones con diferentes
tipos de datos, y que, según el tipo de datos usado, el valor que devuelva sea de ese mismo tipo.

Ejemplo de procedimientos sobre cargados:

Sub VerificarDatos()
'Codigo a ejecutar
'.....
'.......................
End Sub

Sub VerificarDatos(ByVal xVar1 As String)


'Codigo a ejecutar
'.....
'.......................
End Sub

Function VerificarDatos(ByVal xVar1 As String, ByVal xVar2 As Integer) As Boolean


'Codigo a ejecutar
'.....
'.......................
End Function

Sub VerificarDatos(ByVal ParamArray xVar1() As String)


'Codigo a ejecutar
'.....
'.......................
End Sub

UNIVERSIDAD NACIONAL DE INGENIERIA 5


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

Llamada a un Procedimiento Sobre Cargado:

2 Inicio de una Aplicación, Control de Excepciones.

2.1 Ejecución de una Aplicación

Para iniciar y cerrar una aplicación, la biblioteca de clases del .NET Framework proporciona la clase
Application, esta clase contiene dos métodos principales aparte de métodos para gestionar una
aplicación

A nivel Aplicación.

Run
Invoca el método Application.Run para iniciar la aplicación.

Exit
Para cerrar una aplicación, invocamos al método Application.Exit

A nivel Formulario.

Show
Llama al formulario indicado para ser mostrado:

Close
Destruye el formulario al que hace referencia.

UNIVERSIDAD NACIONAL DE INGENIERIA 6


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

2.2 Manejo de excepciones

Las excepciones en Visual Basic 2005 las podemos controlar usando las instrucciones Try / Catch / Finally.,
estas instrucciones realmente son bloques de instrucciones, al estilo de If / Else

Cuando queramos controlar una parte del código que puede producir un error lo incluimos dentro del bloque
Try, si se produce un error, éste lo podemos detectar en el bloque Catch, por último, independientemente de
que se produzca o no una excepción, podemos ejecutar el código que incluyamos en el bloque Finally, para
indicar el final del bloque de control de excepciones lo haremos con End Try.
Cuando creamos una estructura de control de excepciones no estamos obligados a usar los tres bloques,
aunque el primero: Try si es necesario, ya que es el que le indica al compilador que tenemos intención de
controlar los errores que se produzcan. Por tanto podemos crear un "manejador" de excepciones usando los
tres bloques, usando Try y Catch o usando Try y Finally.

Try
En este bloque incluiremos el código en el que queremos comprobar los errores, el código a usar será
un código normal, es decir, no tenemos que hacer nada en especial, ya que en el momento que se
produzca el error se usará (si hay) el código del bloque Catch.

Catch
Si se produce una excepción, ésta la capturamos en un bloque Catch. En el bloque Catch podemos
indicar que tipo de excepción queremos capturar, para ello usaremos una variable de tipo Exception,
la cual pude ser del tipo de error específico que queremos controlar o de un tipo genérico.

Finally
En este bloque podemos indicar las instrucciones que queremos que se ejecuten, se produzca o no una
excepción. De esta forma nos aseguramos de que siempre se ejecutará un código, por ejemplo para
liberar recursos, se haya producido un error o no.

Ejemplo

Dim x, y, r As Integer
Try
x = 5
y = 6
r = x / 6
Console.WriteLine("El resultado es {0}", r)
Catch ex As ArithmeticException When y = 0
Console.WriteLine("Sucedio un error Aritmetico")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try

UNIVERSIDAD NACIONAL DE INGENIERIA 7


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

2.3 Uso de un Nuevo control para el Diseño: TableLayoutPanel

El control TableLayoutPanel organiza su contenido en una cuadrícula. Puesto que el diseño se realiza en
tiempo de diseño y en tiempo de ejecución, puede cambiar dinámicamente a medida que cambie el entorno
de la aplicación. Esto ofrece a los controles del panel la posibilidad de cambiar de tamaño proporcionalmente,
por lo que puede responder a cambios como el cambio de tamaño del control principal o el cambio de la
longitud del texto debido a la adaptación.

En síntesis podríamos decir que representa un panel que dispone su contenido dinámicamente en una
cuadrícula compuesta por filas y columnas.

Propiedades Importantes en el Control

RowSpan
Expande un control ubicado en una determinada celda a tantas filas se le indique.

ColumnSpan
Expande un control ubicado en una determinada celda a tantas columnas se le indique.

Edición de Filas y Columnas

UNIVERSIDAD NACIONAL DE INGENIERIA 8


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

Ejemplo de Diseño:

Laboratorio 04:

Empecemos a crear una aplicación para demostrar el uso de las funciones estudiadas:

I.- Crear el siguiente formulario con el nombre frmLogin, con el siguiente diseño:

Las propiedades para este formulario, son las siguientes:


MaximizeBox= False
MinimizeBox= False
StartPosition = CenterScreen
ShowIcon = False
Opacity = 85%

Y las propiedades para los objetos textbox son las siguientes:

TxtUsuario: MaxLength = 5
CharacterCasing= Upper

TxtClave: MaxLength = 5
PasswordChar = *

II.- Una vez realizado esto, dentro del modulo modGeneral, crear un método con el nombre “Sub Main”.

Sub Main()
''''''''''''''''''''''
'Ejecución de procesos.
'...
'.......
''''''''''''''''''''''

UNIVERSIDAD NACIONAL DE INGENIERIA 9


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

frmLogin.Show()
Application.Run()
End Sub

Para indicarle a nuestro proyecto que al iniciarse se ejecute nuestro método “Sub Main”, en propiedades del
proyecto debemos indicarle desactivando la opción “Enable application framework”:

II.- Crear el siguiente formulario con el nombre frmClientes y con el siguiente diseño.

Control MaskedTextBox

Control DateTimePicker

III.- Aprendiendo a configurar la tabulación de nuestros controles, desde el menú Ver seleccionamos Orden de
Tabulación.

UNIVERSIDAD NACIONAL DE INGENIERIA 10


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

Luego la visualización del formulario quedara como sigue, dándole un Click comenzaremos a configurarlo el
orden de tabulación.

IV.- Ahora crearemos un modulo con el nombre modGeneral, dentro de él tendremos que crear al as
siguientes variables:

Private _Usuario As String = "admin"


Private _Clave As String = "admin"

Después un Enum para la definición de los tipos de clientes:

Enum TipoCliente
Mayorista
Nuevo
Moroso
End Enum

Public Tipo As TipoCliente

Luego agregaremos la siguiente función llamada Logeo, dentro de este modulo:

Function Login(ByVal Usuario As String, ByVal Clave As String) As Boolean


Dim bEstado As Boolean = False

If Usuario = _Usuario And Clave = _Clave Then


bEstado = True
Else
bEstado = False
End If
Return bEstado

End Function

UNIVERSIDAD NACIONAL DE INGENIERIA 11


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

V.- Ahora en el formulario frmLogin debemos escribir lo siguiente dentro del botón Aceptar.

If Login(Me.txtUsuario.Text, Me.txtClave.Text) Then


frmClientes.Show()
Me.Close()
Else
MessageBox.Show("Usuario incorrecto", "Sistemas", _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If

VI.- En el formulario frmLogin, frmClientes buscamos el evento FormClosed y escribimos lo siguiente,


asimismo en el botón cancelar del formulario frmLogin:

Application.Exit()

VII.- Crear una clase al proyecto con el nombre Clientes, y dentro de el definir las siguientes variables, como
se muestra en el siguiente grafico:

Public Class Clientes

Public Codigo As String = ""


Public Nombre As String = ""
Public Apellido As String = ""
Public Ciudad As String = ""
Public Telefono As String = ""
Public FecNacimiento As String = ""

End Class

VIII.- En la misma clase tenemos que agregar el siguiente método:

Public Sub AgregaClientes(ByVal xList As ListBox)


Dim sDato As String = ""
Codigo += Space(5 - Len(Codigo))
Nombre += Space(20 - Len(Nombre))
Apellido += Space(20 - Len(Apellido))
Ciudad += Space(13 - Len(Ciudad))
Telefono += Space(8 - Len(Telefono))

sDato = Codigo + Space(3) + Nombre + Space(3) + Apellido

Select Case Tipo


Case TipoCliente.Mayorista
sDato += Ciudad
Case TipoCliente.Nuevo
sDato += Ciudad + Space(3)
sDato += Telefono
Case TipoCliente.Moroso
End Select
xList.Items.Add(sDato)

End Sub

IX.- Finalmente en la clase agregamos un último procedimiento sobrecargado con en el mismo nombre del
procedimiento anterior en el punto VIII:

Public Function AgregaClientes() As String


Dim sDato As String = ""
sDato = Codigo + " " + Nombre + " " + Apellido + " " + Ciudad
Return sDato
End Function

UNIVERSIDAD NACIONAL DE INGENIERIA 12


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.
Microsoft Partner

X.- Volviendo al formulario frmClientes, agregar lo siguiente en el botón Agregar y probar el formulario.

If Me.radMayorista.Checked = True Then Tipo = TipoCliente.Mayorista


If Me.radMoroso.Checked = True Then Tipo = TipoCliente.Mayorista
If Me.radNuevo.Checked = True Then Tipo = TipoCliente.Mayorista

Dim _Clientes As New Clientes


With _Clientes
.Codigo = Me.txtCodigo.Text
.Nombre = Me.txtNombres.Text
.Apellido = Me.txtApellidos.Text
.Ciudad = Me.txtCiudad.Text
.Telefono = Me.txtTelefono.Text
.FecNacimiento = Me.dtpFecha.Value
End With

_Clientes.AgregaClientes(Me.lstClientes)

Realizar lo siguiente:

I.- Cuando se seleccione la opción “Otros” de “Tipo de clientes” se debe de usar el procedimiento
sobrecargado del punto IX:

II.- Implementar la eliminación del listado de clientes.

UNIVERSIDAD NACIONAL DE INGENIERIA 13


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

También podría gustarte