Autor Tema: Pasar Informacion Entre Formularios C#  (Leído 7554 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cristiantorres

  • Sv Jr.
  • **
  • Mensajes: 76
  • Bendiciones para todos
    • Blog dedicado a la programacion
Pasar Informacion Entre Formularios C#
« : mayo 01, 2012, 08:31:51 pm »
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.

Código: [Seleccionar]
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.

Código: [Seleccionar]
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 :D
Visita mi Blog C#, Asp.Net, Python y mas...
http://cristiantorresalfaro.blogspot.com
http://codemania.tk

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re:Pasar Informacion Entre Formularios C#
« Respuesta #1 : mayo 02, 2012, 01:03:58 pm »
Mmmm, creo q la intencion esta muy buena, es bueno pasar por aqui un rato y ver q entre comunidad como aprendemos entre nosotros.. Lo que le falta es utilidad, (ojo solo es mi punto de vista), siento q lo limitas demasiado al copiar d un formulario a otro si:
1 - Para copiar deben d llevar el mismo encabezado de lo contrario no se puede
2 - No esta anexado a ninguna base de datos eso quiere decir q todos los datos son volatiles (aplicacion?)

Y x eso yo leyendo diciendo "bien chivo para aprender un poquito mas ver temas asi", pero cuando m puse a pensar "¿Alguna aplicacion?", "no me permite conectar a un DataSource", mmmmmm...

La idea esta muy buena, pero seria bueno q hicieras uno de copia de formularios ya sea con un Origen de Datos interno o un archivo externo como Excel, en el ucal puedas elegir las columnas q queires copiar hacer donde la quieres pegar en el formulario. Pero si siento q se queda un poco corto en aplicacion.! Es mi opinion!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado cristiantorres

  • Sv Jr.
  • **
  • Mensajes: 76
  • Bendiciones para todos
    • Blog dedicado a la programacion
Re:Pasar Informacion Entre Formularios C#
« Respuesta #2 : mayo 02, 2012, 05:06:12 pm »
Mmmm, creo q la intencion esta muy buena, es bueno pasar por aqui un rato y ver q entre comunidad como aprendemos entre nosotros.. Lo que le falta es utilidad, (ojo solo es mi punto de vista), siento q lo limitas demasiado al copiar d un formulario a otro si:
1 - Para copiar deben d llevar el mismo encabezado de lo contrario no se puede
2 - No esta anexado a ninguna base de datos eso quiere decir q todos los datos son volatiles (aplicacion?)

Y x eso yo leyendo diciendo "bien chivo para aprender un poquito mas ver temas asi", pero cuando m puse a pensar "¿Alguna aplicacion?", "no me permite conectar a un DataSource", mmmmmm...

La idea esta muy buena, pero seria bueno q hicieras uno de copia de formularios ya sea con un Origen de Datos interno o un archivo externo como Excel, en el ucal puedas elegir las columnas q queires copiar hacer donde la quieres pegar en el formulario. Pero si siento q se queda un poco corto en aplicacion.! Es mi opinion!

Hola primeramente gracias por el comentario.

Respecto al ejemplo yo lo hice asi para facilitar un poco el entendimiento pero claramente y facilmente podes utilizar este mismo ejemplo con datos provenientes de una BD yo lo hice así cargar los datos manuales para facilitar el ejemplo, y con respecto a que los datagrid tienen que tener el mismo encabezado lo hice asi por lo que ya te explique pero eso no es obligación que sea así podes ponerle diferentes columnas y pasar solo los datos que se necesiten.

Pronto pondré un ejemplo relacionando con una bd para que veas que la forma es la misma.

Saludos...
Visita mi Blog C#, Asp.Net, Python y mas...
http://cristiantorresalfaro.blogspot.com
http://codemania.tk

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re:Pasar Informacion Entre Formularios C#
« Respuesta #3 : mayo 03, 2012, 02:06:37 pm »
Hola primeramente gracias por el comentario.

Respecto al ejemplo yo lo hice asi para facilitar un poco el entendimiento pero claramente y facilmente podes utilizar este mismo ejemplo con datos provenientes de una BD yo lo hice así cargar los datos manuales para facilitar el ejemplo, y con respecto a que los datagrid tienen que tener el mismo encabezado lo hice asi por lo que ya te explique pero eso no es obligación que sea así podes ponerle diferentes columnas y pasar solo los datos que se necesiten.

Pronto pondré un ejemplo relacionando con una bd para que veas que la forma es la misma.

Saludos...

Bueno, sip, seria bueno q lo coloques para darle sentido a lo q intentas explicar, xq como te decia, sinceramente no le encuentro una aplicacion a lo q habias colocado. Bueno, exitos y q sigas colaborando con la comunidad. Yo q a mas d alguno le puede servir con las correcciones q t dije.!
Bueno al igual m pongo a la orden si tienes dudas de como desarrollarlo en multiples archivos o BD, luego hasta un ETL podrias implementar se volveria aun mucho mas interesante. Cualqueir cosa estamos para ayudarte! Saludos
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado cristiantorres

  • Sv Jr.
  • **
  • Mensajes: 76
  • Bendiciones para todos
    • Blog dedicado a la programacion
Re:Pasar Informacion Entre Formularios C#
« Respuesta #4 : mayo 03, 2012, 05:32:46 pm »
Bueno, sip, seria bueno q lo coloques para darle sentido a lo q intentas explicar, xq como te decia, sinceramente no le encuentro una aplicacion a lo q habias colocado. Bueno, exitos y q sigas colaborando con la comunidad. Yo q a mas d alguno le puede servir con las correcciones q t dije.!
Bueno al igual m pongo a la orden si tienes dudas de como desarrollarlo en multiples archivos o BD, luego hasta un ETL podrias implementar se volveria aun mucho mas interesante. Cualqueir cosa estamos para ayudarte! Saludos
Gracias por la sugerencia, y gracias tambien por  ponerte a la orden lo tendré en cuenta.
Saludos
Visita mi Blog C#, Asp.Net, Python y mas...
http://cristiantorresalfaro.blogspot.com
http://codemania.tk

Desconectado DarkBios

  • The Communiter-
  • *
  • Mensajes: 2329
  • El conocimiento no tiene limites
    • Rivera Center System
Re:Pasar Informacion Entre Formularios C#
« Respuesta #5 : mayo 03, 2012, 07:11:48 pm »
Una pregunta, se puede hacer esto, digamos que es un formulario hecho en python, como haria yo para que en vez de hacer una migracion o copiar los mismos datos en cada formulario, realizar un conmutado, o sea tipo base de datos que tenga esa info y que solo sea invocado y no tener que estar haciendolo en cada formulario.

yo porque no soy experto en C#, pero mas o menos entiendo lo que decis y estoy aprendiendo desde hace dos años python.