practica 1.docx

16
UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA PRACTICA 1 : PROGRAMACION VISUAL C# PRACTICA 1 Miguel Bàrcenas 15/02/2015

Upload: lening-garcia

Post on 15-Dec-2015

21 views

Category:

Documents


1 download

DESCRIPTION

Windows Forms

TRANSCRIPT

UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA

PRACTICA 1 : PROGRAMACION VISUAL C#

PRACTICA 1

Miguel Bàrcenas

15/02/2015

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Introducción a Windows forms Desde la perspectiva de C#, un programa con interfaz gráfica, que se ejecuta bajo el

sistema operativo Windows, es muy similar a un programa de consola. La única diferencia,

es que debe existir un bucle que se encargue de procesar todos los mensajes del sistema

operativo dirigidos a la aplicación. En este punto es donde, a diferencia del lenguaje C,

entra a operar la orientación a objetos mediante la encapsulación de este bucle de

mensajes y otras propiedades inherentes al mismo, en una clase que se encarga de todos

estos detalles. Esa clase se llama Application y es estática, lo que significa que no es

posible definir objetos a partir de ella.

La clase Application

La clase Application hace parte del espacio de nombres System.Windows.Forms. El

principal método que posee esta clase es Run, el cual se encarga de iniciar el bucle de

mensajes en la línea de ejecución que se encuentre actualmente.

El método Run está sobrecargado con tres versiones. Una de ellas se ejecuta sin

parámetros, la otra recibe un parámetro del tipo ApplicationContext, y una tercera

versión recibe un objeto del tipo Form, o lo que se conoce como formulario. La mayoría

de aplicaciones estándar de Windows se ejecutan bajo esta última versión del método

Run.

El formulario

El elemento principal y más representativo de una aplicación con interfaz gráfica es aquel

que se conoce con el nombre de ventana. Desde la visión del programador de C#, el objeto

que da origen a este elemento es el formulario.

La clase Form, que pertenece al espacio de nombres System.Windows.Forms, es quien

se encarga de definir todos los formularios que sean necesarios para la creación de las

ventanas que puede necesitar una aplicación con interfaz gráfica de usuario.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Generalmente, y en el contexto del entorno de desarrollo de .NET, a este tipo de

plicaciones se le denomina programas Windows Forms.

Form es una clase que encapsula todas las propiedades, métodos y eventos que se

necesitan para dar funcionalidad a una ventana. Pero esto no significa que el programador

tenga que limitarse a definir objetos con esta clase y a modificar sus propiedades, porque

también puede heredar de ella para crear clases que definan formularios de ventanas

totalmente personalizadas a sus intereses.

Para crear nuestro primer formulario basta con crear una instancia de la clase Forms,

poner su propiedad visible a true y utilizar el método Run de la clase Application.

Form ventana = new Form();

ventana.Text = "¡Hola ventana...!";

ventana.Visible = true;

Application.Run(ventana);

Controles En Windows se le llama control a cualquier elemento gráfico colocado sobre una ventana

y que permite realizar alguna tarea de interés para la aplicación. Ejemplos de controles

son las barras de desplazamiento, los menús, botones de comando, botones de opción (o

radio), casillas de verificación, campos de entrada de texto y cuadros de lista, entre otros.

Los controles son una forma de abstracción y encapsulamiento bastante elevado que le

permiten al programador estructurar y modular sus aplicaciones, despreocupándose de

los detalles relacionados con el manejo del teclado y el ratón.

Para .NET cualquier control es un objeto que puede crearse a partir de una clase, y su

manejo es igual al de cualquier otro objeto que el programador haya utilizado con

anterioridad. Con la ventaja que ya existe una amplia gama de clases que han sido

programadas, y hacen parte del Framework .NET, para tal fin. Aunque este tema se va a

describir con más detalle en posteriores capítulos, aquí se hace mención de tres clases que

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

permiten crear los controles más básicos de una aplicación: Button, para crear botones

de comando; TextBox, para crear campos de entrada de texto, y Label para crear las

llamadas etiquetas, que permiten mostrar cadenas de texto sobre la ventana.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Propiedades En lenguajes de programación como Java solemos (o solíamos) escribir los métodos de

acceso y mutación de los campos de la clase. La forma convencional consiste en

anteponer los prefijos get y set para referirse a los métodos de acceso y a los métodos de

mutación, respectivamente. Este mismo esquema de estructura de los tipos para los

miembros puede utilizarse en C#, sin embargo, este lenguaje provee un mecanismo más

natural de acceder y cambiar valores de los campos; me refiero a las propiedades.

Semánticamente las propiedades se analogan con los campos miembro de un tipo, sin

embargo, las propiedades permiten hacer validaciones sobre las asignaciones y

mantener la consistencia de los datos asignados a los campos miembro (o de instancia).

Las propiedades, además, a nivel sintáctico difieren notablemente debido a la forma de

su declaración y composición estructural:

Campo:

private string Nombre;

Propiedad:

private string Nombre

{

get;

set;

}

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Nótese de la diferencia de la sintaxis requerida para construir cada uno de estos

miembros de instancia. Por un lado, el campo sólo requiere (elementalmente) de tres

elementos:

modificador de acceso + tipo de dato + identificador;

la propiedad por su lado, además de la sintaxis anterior requiere especificar un bloque de

código encerrado entre llaves de apertura ({) y cierre (}). En el bloque de construcción se

especifica la combinación de acceso y modificación a través de set y get.

Por otro parte, [1] si quisiéramos distinguir entre una propiedad y un cambo desde código

cliente no podríamos saberlo (bueno sí, pero si utilizamos un editor de código fuente

como el que incorpora Visual Studio IDE):

Construcciones de Acceso

Una propiedad está compuesta por los elementos de acceso: get y set.

get

A través de get podemos acceder al valor de la propiedad, en consecuencia del campo

asociado con esta propiedad. El valor de retorno corresponde con el tipo de la propiedad.

Cuando sólo especificamos esta construcción en el cuerpo de una propiedad, decimos que

la propiedad es de sólo lectura.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

set

En otros lenguajes se le conoce como mutador, debido a que es la construcción de acceso

que modifica, cambia o muta el valor del campo asociado con la propiedad. Cuando sólo

se ha especificado set en el cuerpo de la propiedad, decimos que se trata de una propiedad

de sólo escritura. Adicionalmente, esta construcción de acceso tiene unavariable

implícita llamada value que corresonde con el valor a asignar a la propiedad.

Las construcciones de acceso se pueden combinar para crear propiedades de lectura y

escritura como ocurre en:

private string Nombre

{

get;

set;

}

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Eventos Un evento consiste en una acción generada a partir de la interacción con una aplicación: clic

de mouse, pulsación de tecla o botón, selección de comando de un menú, arrastrar y soltar

elementos en pantalla, &c. Los eventos también puede generarse por la generación de la

actividad de un sistema información: por ejemplo en un sistema de cajeras automáticos

(ATM), una vez que un cliente de la entidad bancaria realiza una transacción, el sistema se

encarga de hacer un registro de la actividad para controlar y asegurar los valores de los clientes

de la entidad, igualmente, el mismo sistema puede enviar un mensaje de texto al móvil del

cliente con el registro (lugar, valor, fecha y hora) de la transacción recién efectuada. (En la

Figura 1 se puede apreciar pictóricamente todos los eventos anteriores.)

Concepto en C#

Básicamente, un evento en C# es un mecanismo que permite la generación de

notificaciones a un conjunto de clientes cuando algún suceso interesante transcurra sobre

un objeto. Sucesos a los que podríamos distinguir como interesantes (ejemplos):

a. Cambio del estado del objeto. b. Clic sobre un botón de envío de información de un formulario. c. Descarga de archivo completada. d. Notificación sobre con un globo de texto cuando la sincronización de un archivo se

ha completado. e. Porcentaje del avance de un proceso sobre una barra de progreso. f. Cambio del nombre del archivo afecta el texto de la barra de título de una

aplicación. Todos los anteriores, y muchos otros eventos son generados a partir de una clase publicadora y notificados a un conjunto de clases clientes (o subscriptores) que están interesados en la generación de esos cambios producidos por los eventos. En la programación de interfaces gráfica de usuario es común el uso de eventos. Los eventos se asocian con controles (componentes gráficos: botones, listas, cajas de comprobación, áreas de texto, agrupador de elementos, &c.). Cada vez que un usuario pulsa un botón, por ejemplo, se dispara un evento que genera una acción particular (guardar archivo, cerrar el programa, ir a la siguiente página, etc.).

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Aparte de la utilidad anterior de los eventos, éstos también son usados para cualquier

escenario que requiera la notificación de cambios de estados de un objeto a un conjunto

de clientes interesados en conocer su estado y reaccionar frente a esos cambios.

Saber en qué consiste delegados nos permitirá avanzar más fácilmente en esta serie de

«Eventos en C#», debido a que un evento es un tipo de delegado especial (por especificarlo

de algún modo).

Más técnicamente, un evento es un mecanismo utilizado por una clase para exponer una

serie de delegados de métodos, los cuales son invocados una vez ocurra el evento asociado

a esa clase de objeto.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Ejercicio sobre controles básicos de Windows forms y

Eventos.

Ejercicio 1:

Algo fundamental es la validación de los datos con lo que trabaja nuestro proyecto, por

esta razón, el siguiente ejemplo se basa en validaciones en tiempo de ejecución en los

datos que se pueden insertar en las cajas de texto.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Como se puede observar en la primera caja de texto solo se podrán insertar letras y

espacios en blancos. Para trabajar con validaciones en tiempo de ejecución de debe

trabajar con el evento KeyPress que se ejecuta cuando el foco está en el TextBox y

se presiona un tecla.

Para permitir que una tecla que se presione se escriba en la caja de texto se debe hacer lo

siguiente:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (char.IsLetter(e.KeyChar) || char.IsSeparator(e.KeyChar))

{

e.Handled = false;

}

}

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Ejercicio2:

En este ejercicio se almacenara la información básica de una persona en en array de

objetos, estos objetos van a ser de tipo Persona(), esta sera una clase que crearemos para

guardar nuestros datos.

Los datos que vamos a guardar será código, nombre, apellido, dirección, teléfono, correo

asi que dentro de la clase debemos tener variables privadas para guardar los datos.

class datos

{

private string codigo;

private string nombre;

…………………….

Ya que estos datos son privados solo pueden acceder a ellos dentro de la misma clase por

esa razón crearemos propiedades que nos permitirán sacar un datos o insertar un dato.

public string P_Codigo

{

get { return codigo; }

set { codigo = value; }

}

En este caso he creado una propiedad llamada P_Codigo que me permitirá tener acceso

al miembro privado. Esto proceso se hará para cada una de las variables privadas que

hemos creado.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Una vez que tengamos nuestra clase Persona() persona crearemos una interfaz para

guardar datos.

Requisitos:

1. Cuando se inicie la aplicación todas las cajas de textos y los botones Guardar y

Eliminar deben estar bloqueados, es decir, no se puede seleccionar o escribir en

ellas.

2. Cuando se le de click en el botton Nuevo:

a. Bloquear el botón nuevo.

b. Desbloquear el guardar.

c. Bloquear el botón editar.

d. Limpiar las cajas de texto.

e. Desbloquear las cajas de texto.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

3. Al darle click en Editar:

a. Las cajas de texto no deven limpiarse para que los datos se puedan editar y

posteriormente guardarse.

b. Bloquear el botón editar

c. Bloquear el botón nuevo

d. Desbloquear el botón guardar

e. Desbloquear las cajas de texto para la edición.

4. Al darle click en el botton guardar:

Este botón servirá tanto paga guardar como actualizar por lo tanto se debe contar

con un mecanismo para saber si se quiere guardar o actualizar un registro.

a. Los datos se deben de guardar en el list.

b. Se deben bloquear las cajas de texto.

c. Se debe de mostrar en el grid todos los datos que hay en la lista.

d. Se debe cargar el primer registro en las cajas de texto.

5. Al darle click sobre la tabla

a. Se deben de cargar el registro que se seleccionó en las cajas de texto, esto

se puede hacer obteniendo el índice de la fila de la tabla que se ha

seleccionado, y cargar ese registro en las cajas de texto.

Para guardar los datos utilizaremos una lista de tipo estudiante como la siguiente

List<Estudiante> datos;

datos = new List<Estudiante>();

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación

Cuando seleccionemos cualquier columna de cualquier registro de los que se nos

muestran en el datagrid, estos datos también se deven mostrar en las cajas de textos que

están bloqueadas.

Universidad Nacional Autónoma de Nicaragua UNAN-León

Departamento de Computación