Cuando se desarrollan aplicaciones con formularios algunas veces es necesario pasar información de un formulario hacia otro, les traigo un pequeño ejemplo de como hacer esto.
Existen muchas maneras de hacerlo pero en este pequeño ejemplo les mostrare una manera de hacerlo fácilmente (Ojo solo sirve en el caso de querer pasar un solo dato).
Para empezar creamos 2 formularios (Los 2 tendrán los mismos controles).
Formulario principal.
Y el formulario 2 que sera donde pasaremos el dato.
Para el caso de este ejemplo cargo los datos en el
datagriedview de manera manual no uso ninguna base de datos.
namespace PasarInformacion
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//variables que usaremos para pasar la informacion
public static int id;
public static string nombre;
public static string pais;
//metodo para cargar los datos
private DataTable Datos()
{
DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("Nombre");
dt.Columns.Add("Pais");
//Agregar Datos
DataRow row = dt.NewRow();
row["Id"] = 1;
row["Nombre"] = "Juan";
row["Pais"] = "España";
dt.Rows.Add(row);
row = dt.NewRow();
row["Id"] = 2;
row["Nombre"] = "Ana";
row["Pais"] = "El Salvador";
dt.Rows.Add(row);
row = dt.NewRow();
row["Id"] = 3;
row["Nombre"] = "Miguel";
row["Pais"] = "Argentina";
dt.Rows.Add(row);
return dt;
}
private void Form1_Load(object sender, EventArgs e)
{
//cargo los datos en el datagrid
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = Datos();
}
private void btnabrir_Click(object sender, EventArgs e)
{
DataGridViewRow row = dataGridView1.CurrentRow;
if (row != null)
{
//guardamos los datos de la fila en las variables
id = Convert.ToInt32(row.Cells[0].Value);
nombre = row.Cells[1].Value.ToString();
pais = row.Cells[2].Value.ToString();
Form2 ob = new Form2();
ob.Show();
}
}
}
}
Lo importante del código de este formulario es las
variables que definimos a nivel de
clase que son las que usaremos para pasar la información al
formulario 2, luego se crea un método
DataTable que es donde se cargan los datos que mostraremos en el
datagriedview que en este caso solo son 3.
Otro aspecto importante es el código que esta dentro del
evento click del botón que invoca al
formulario 2 pero tambien guardamos los datos de la fila seleccionada en las
variables que definimos a nivel de
clase.
Luego en el form 2 tenemos el siguiente código.
namespace PasarInformacion
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private DataTable Datos()
{
DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("Nombre");
dt.Columns.Add("Pais");
//cargar los datos con las variables del form principal
DataRow row = dt.NewRow();
row["Id"] = Form1.id ;
row["Nombre"] = Form1.nombre ;
row["Pais"] = Form1.pais ;
dt.Rows.Add(row);
return dt;
}
private void Form2_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = Datos();
}
private void btncerrar_Click(object sender, EventArgs e)
{
Close();
}
}
}
Como pueden ver este código tambien tenemos un
método que es donde cargaremos los datos del
datagriedview, solo que a diferencia del anterior esta vez cargamos los datos con las
variables del
formulario principal.
Para una mejor explicación y visualización del código pasen por mi blog...
También pueden encontrar el link para descargar el proyecto...http://cristiantorresalfaro.blogspot.com/2012/04/pasar-informacion-entre-formularios.html Saludos desde El Salvador