C# MultipleForms: Aplicación básica compuesta de varias ventanas

Es raro que una aplicación se base en una sola ventana, la mayoría cargan otros formularios, vistas, grids partiendo del form inicial.  Hasta ahora hemos visto como crear un form al vuelo en tiempo de ejecución colocando los controles de la ventana secundaria mediante programación (Ver C# Creación de Formularios y controles básicos). Esto es inviable en una aplicación medianamente compleja (posicionar los controles unos respecto a otros, el aspecto y un montón de atributos a tomar en cuenta de cada control). Lo mejor es añadir un item con la opción de menú Project > Add > New Item y añadir un nuevo form que cargaremos desde el principal con un botón.

csharp1

El IDE genera todos los archivos necesarios y se genera un Form1.cs donde podemos definir el aspecto de la nueva ventana en la pestaña Design.

Al evento de click del botón del forma principal añadimos el código para carga el form nuevo:


void Button1Click(object sender, EventArgs e)
{
Form1 secondForm;

secondForm=new Form1();

//se puede poner todo en una linea
//Form1 secondForm = new Form1();

secondForm.Show();

}

El momento de cargar Form1 vamos a aprovechar el constructor de la clase para alimentar un control DataGridView con el contenido de una tabla creada con SQLite (aprovechamos la BD creada C# SQLiteBook: Catalogo de libros con SQLite (I))

csharp2

 

 /*
  * Created by SharpDevelop.
  * User: i.landajuela
  * Date: 08/09/2016
  * Time: 19:02
  * 
  * To change this template use Tools | Options | Coding | Edit Standard Headers.
  */
 using System;
 using System.Drawing;
 using System.Windows.Forms;
 
 using System.Data.SQLite;
 using System.IO;
 
 
 
 namespace MultipleForms
 {
     /// <summary>
     /// Description of Form1.
     /// </summary>
     public partial class Form1 : Form
     {
         
         
         public Form1()
         {                        
             InitializeComponent();
             
             //dataGridView1.Rows.Add(new object[] { "Uno", "Dos" });                        
             SQLiteConnection conexion; //Clase para establecer conexión inicial
             SQLiteCommand cmd; //Clase para ejecutar sentencias
                         
             try
             {
             
                 conexion = new SQLiteConnection
                     ("Data Source=ejemplo01.sqlite;Version=3;New=True;Compress=True;");
                 
                 conexion.Open();
                 
                 string consulta = "select * from books";
                 
                 cmd = new SQLiteCommand(consulta, conexion);
                 SQLiteDataReader datos = cmd.ExecuteReader();
                 
                 //Console.WriteLine("Nº campos registros: "+datos.FieldCount);
                 
                 if (datos.HasRows) 
                 {                    
                     //MessageBox.Show("La consulta retorna registros","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
                 }
                 else
                 {
                     MessageBox.Show("La consulta no retorna registros","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);                    
                 }
                 
                 while (datos.Read())
                 {
                     DataGridViewRow row = new DataGridViewRow();            
                     
                     string name = Convert.ToString(datos[0]);
                     string autor = Convert.ToString(datos[1]);
                     string genre = Convert.ToString(datos[2]);
                     string summary = Convert.ToString(datos[3]);
                     
                     row.CreateCells(dataGridView1);            
                     row.Cells[0].Value=name;
                     row.Cells[1].Value=name;
                     row.Cells[2].Value=genre;
                     row.Cells[3].Value=summary;
                     this.dataGridView1.Rows.Add(row);
                 }
                 
                 conexion.Close();
             }
             catch (Exception e)
             {                
                 MessageBox.Show("Error" + e.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);                                    
             }
             
         }                
     }
 } 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s