Está en la página 1de 13

Sistemas UNI.

Microsoft Partner

Instructor: V. Carlos, Segura P.

UNI. Microsoft P ar t ne r Instructor: V. Carlos, Segura P. LABORATORIO WINDOWS FORMS .NET

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.

Microsoft Partner

Instructor: V. Carlos, Segura P.

3WINDOWS FORMS

ar t ne r Instructor: V. Carlos, Segura P. 3 WINDOWS FORMS 1 Declaración por Referencia
ar t ne r Instructor: V. Carlos, Segura P. 3 WINDOWS FORMS 1 Declaración por Referencia

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.

producirá una excepción que el objeto no fue instanciado. Si ahora instanciamos el objeto veremos que

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

el objeto veremos que no produce ninguna excepción. UNIVERSIDAD NACIONAL DE INGENIERIA 2 FACULTAD DE INGENIERIA

UNIVERSIDAD NACIONAL DE INGENIERIA

2

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

Sistemas UNI.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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.

predeterminado Visual Basic, para C# la extensión sera .cs. Creación de Clases en .NET 1.4 Object:

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.

devolver una representación en formato cadena de un objeto. UNIVERSIDAD NACIONAL DE INGENIERIA 3 FACULTAD DE

UNIVERSIDAD NACIONAL DE INGENIERIA

3

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

Sistemas UNI.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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.

clase, esa definición acaba indicándolo con End Class . 1.6 Los miembros de una clase Una

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á.

usadas para mantener los datos que la clase manipulará. Los métodos Son las acciones que la

Los métodos Son las acciones que la clase puede realizar, normalmente esas acciones serán sobre los datos 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.

de un cliente son dos características del cliente. Los eventos Son mensajes que la clase puede
de un cliente son dos características del cliente. Los eventos Son mensajes que la clase puede

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.

Microsoft Partner

End Set

End Property

Instructor: V. Carlos, Segura P.

Public Function BuscaEMpleado(ByVal _codigo As Integer) As String Return "Felipe Castañeda" End Function

End Class

Uso de la clase:

Castañeda" End Function End Class Uso de la clase: 1.7 Creación de Procedimientos Sobre Cargados La

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.

Microsoft Partner

Llamada a un Procedimiento Sobre Cargado:

P ar t ne r Llamada a un Procedimiento Sobre Cargado: Instructor: V. Carlos, Segura P.

Instructor: V. Carlos, Segura P.

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.

métodos para gestionar una aplicación A nivel Aplicación. Run Invoca el método Application.Run para iniciar la

Run

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

el método Application.Run para iniciar la aplicación. Exit Para cerrar una aplicación, invocamos al método

Exitel método Application.Run para iniciar la aplicación. Para cerrar una aplicación, invocamos al método

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

una aplicación, invocamos al método Application.Exit A nivel Formulario. Show Llama al formulario indicado para
una aplicación, invocamos al método Application.Exit A nivel Formulario. Show Llama al formulario indicado para

A nivel Formulario.

invocamos al método Application.Exit A nivel Formulario. Show Llama al formulario indicado para ser mostrado: Close

Show

Llama al formulario indicado para ser mostrado:

Show Llama al formulario indicado para ser mostrado: Close Destruye el formulario al que hace referencia.

Close

Destruye el formulario al que hace referencia.

UNIVERSIDAD NACIONAL DE INGENIERIA

6

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

Sistemas UNI.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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.

el error se usará (si hay) el código del bloque Catch. Catch Si se produce una

Catch Si se produce una excepción, ésta la capturamos en un bloque Catch. En el bloque 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.

para liberar recursos, se haya producido un error o no. Ejemplo Dim x, y, r As

Ejemplo

Dim x, y, r As Integer Try

x = 5

y = 6

r

x

= 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

/

6

UNIVERSIDAD NACIONAL DE INGENIERIA

7

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

Sistemas UNI.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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.

en una cuadrícula compuesta por filas y columnas. Propiedades Importantes en el Control RowSpan Expande un

Propiedades Importantes en el Control

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

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

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

en una determinada celda a tantas columnas se le indique. Edición de Filas y Columnas UNIVERSIDAD

Edición de Filas y Columnas

tantas columnas se le indique. Edición de Filas y Columnas UNIVERSIDAD NACIONAL DE INGENIERIA 8 FACULTAD

UNIVERSIDAD NACIONAL DE INGENIERIA

8

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

Sistemas UNI.

Microsoft Partner

Ejemplo de Diseño:

Instructor: V. Carlos, Segura P.

t ne r Ejemplo de Diseño: Instructor: V. Carlos, Segura P. Laboratorio 04: Empecemos a crear

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:

con el nombre frmLogin , con el siguiente diseño: Las propiedades para este formulario, son las

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.

Microsoft Partner

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

Instructor: V. Carlos, Segura P.

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”:

desactivando la opción “Enable application framework”: II.- Crear el siguiente formulario con el nombre
desactivando la opción “Enable application framework”: II.- Crear el siguiente formulario con el nombre

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

con el nombre frmClientes y con el siguiente diseño. Control MaskedTextBox Control DateTimePicker III.-

Control MaskedTextBox

Control DateTimePicker

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

desde el menú Ver seleccionamos Orden de Tabulación. UNIVERSIDAD NACIONAL DE INGENIERIA 10 FACULTAD DE INGENIERIA

UNIVERSIDAD NACIONAL DE INGENIERIA

10

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

Sistemas UNI.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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

Click comenzaremos a configurarlo el orden de tabulación. IV.- Ahora crearemos un modulo con el nombre

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.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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.

Microsoft Partner

Instructor: V. Carlos, Segura P.

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