Agenda - 0.1





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.