using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
namespace Agenda
{
public partial class MainForm : Form
{
// Definimos la estructura persona
private struct persona
{
public string nombre;
public string teléfono;
}
// Definimos la matriz unidimensional agenda
// Se finalizara cuando se complete la matriz o se pulse Crtl+Z
private static int nElementos = 100;
private persona[] agenda = new persona[nElementos];
private int i = 0;
public MainForm()
{
InitializeComponent();
}
void AñadirClick(object sender, EventArgs e)
{
if (i == nElementos) return;
if (Nombre.Text.Length == 0 ||
Tfno.Text.Length == 0)
{
MessageBox.Show("Datos no correctos");
return;
}
// Añadir el nombre y el teléfono a la matriz
agenda[i].nombre = Nombre.Text;
agenda[i].teléfono = Tfno.Text;
// Añadir el nombre a la lista
listaNombres.Items.Add(Nombre.Text);
i++; // índice del siguiente elemento vacío
}
void OrdenGuardarClick(object sender, EventArgs e)
{
BinaryWriter bw = null; // flujo para escribir
try
{
// Crear un flujo de la clase BinaryWriter para
// escribir en un fichero.
// Si el fichero existe se destruye.
bw = new BinaryWriter(new FileStream("agenda.dat",
FileMode.Create, FileAccess.Write));
i = 0; // índice de para la matriz agenda
while (agenda[i].nombre != null)
{
// Almacenar un nombre y un teléfono
// (un registro) en el fichero
bw.Write(agenda[i].nombre);
bw.Write(agenda[i].teléfono);
i++;
}
}
finally
{
// Cerrar el flujo
if (! (bw == null)) bw.Close();
}
}
void OrdenSalirClick(object sender, EventArgs e)
{
Close();
}
void MainFormLoad(object sender, EventArgs e)
{
BinaryReader br = null;
try
{
// Abrir un flujo de la clase BinaryReader para
// leer del fichero.
br = new BinaryReader(new FileStream("agenda.dat",
FileMode.Open, FileAccess.Read));
i = 0; // índice para la matriz agenda
do
{
// Leer un nombre y un teléfono (un registro)
// desde el fichero. Cuando se alcance el final
// del fichero el método utilizado para leer
// lanzará una excepción que será atrapada
// por el bloque catch escrito a continuación.
agenda[i].nombre = br.ReadString();
agenda[i].teléfono = br.ReadString();
// Añadir el nombre a la lista
listaNombres.Items.Add(agenda[i].nombre);
i++;
}
while (true);
}
catch (Exception ex)
{
Console.WriteLine("Proceso de carga de la agenda.");
}
finally
{
// Cerrar el flujo
if (! (br == null)) br.Close();
}
}
void NombresSelectedIndexChanged(object sender, EventArgs e)
{
int indSelec = listaNombres.SelectedIndex;
if (indSelec < 0) return;
// Mostrar en las cajas de texto los datos
// correspondientes al elemento seleccionado
// cuando se selecciona un elemento de la lista se produce
// el evento SelectdIndexChanged (el elemento selecionado ha cambiado)
Nombre.Text = agenda[indSelec].nombre;
Tfno.Text = agenda[indSelec].teléfono;
}
void ModificarClick(object sender, EventArgs e)
{
int indSelec = listaNombres.SelectedIndex;
if (indSelec < 0) return;
// Modificar los datos correspondientes
// al elemento seleccionado
agenda[indSelec].nombre = Nombre.Text;
agenda[indSelec].teléfono = Tfno.Text;
// Modificar el nombre en la lista
listaNombres.Items[indSelec] = Nombre.Text;
}
void MainFormFormClosing(object sender, FormClosingEventArgs e)
// Al cerrar la aplicacion preguntamos al usuario si quiere guardar
// si la respuesta es si el metodo Show devuelve el valor Yes
// y se ejecuta la sentencia ordenGuardad.PerformClick();
// es como si el usuario hubiera hecho click sobre la orden guardar
{
DialogResult respuesta = 0;
respuesta = MessageBox.Show(
"¿Quiere guardar la agenda?",
"Seleccione una opción",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (respuesta == DialogResult.Yes)
{
ordenGuardar.PerformClick();
MessageBox.Show("La agenda actual se guardó");
}
}
void OrdenAcercaDeClick(object sender, EventArgs e)
{
MessageBox.Show("Aplicación Agenda. Versión 0.1",
"Acerca de Agenda",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
}
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.