martes, 23 de septiembre de 2008

Comunicar dos frames en C# [Dialogos Personalizados]

   Muchas personas se preguntan cuando estan programando, "¿como puedo hacer que este frame que tengo le mande informacion a este otro?" y suele ser, como lo era para mi, un gran dolor de cabeza, asi que decidi hacer este post para explicar como hacer funcionar la comunicacion entre frames, o dialogos personalizados.

El ejemplo que planteo es simple pero tiene grandes aplicaciones, lo que vamos a necesitar sera:

1) un windows form llamado "Form1"

2) un windows form llamado "Form2"

3) una etiqueta

4) un textbox

5) 2 botones

que deberan verse de la siguiente manera

Form 1:

Form 2:

 Ahora bien, el funcionamiento sera el siguiente:

Primero cargaremos el Form1, al hacer click en el boton "GO!" se mostrara el Form2, introduciremos un texto en el textbox y el boton set, cambiara el valor de la etiqueta en el Form1 con el texto de el texbox.

El Codigo

1) En el Boton del Form2  ponemos los siguiente:

 private void button1_Click(object sender, EventArgs e)
      {

                  texto = textBox1.Text;
       }

2) Siempre dentro del Form2 en declaramos la siguiente propiedad, ojo que esto no debe de ir dentro de ningun metodo si no que dentro de la clase misma

    public string text
         {
                get
                {
                      return texto;
                }
  }

3) Ahora debemos declarar que nuestro Form2 tiene propiedades de Dialogo, y para ello seleccionaremos el boton "Set" y en la propiedad Dialog Result pondremos "OK", esto indica que nuestro dialogo sera del tipo "OK"

4) hecho esto nos vamos al Form1 y para terminar ponemos en el boton "GO!" el siguiente codigo:

     private void button1_Click(object sender, EventArgs e)
     {
               Form2 frm2 = new Form2();

              if (frm2.ShowDialog() == DialogResult.OK)
               {
                      label1.Text = frm2.text;
               }
  }

   Bueno espero que esto sea de su utilidad. Hasta la proxima



4 comentarios:

Anónimo dijo...

Mil y Mil gracias es justo lo que necesito

Navarend dijo...

Buenas tardes como puedo pasar un valor del frame1 al frame2 con solo darle clic en el boton del frame 1 me muestre el valor en el frame2

Navarend dijo...

Como puede mandar un valor del frame1 al frame2 es decir le doy un clic en el frame 1 y me manda al frame2 pero ya con el valor del frame1
Saludos

Anónimo dijo...

Para mi estimado amigo Navarend
Se puede hacer por medio de los constructores...
en tu form2
en el constructor
public Form2(int Variable_pasada)
{
InitializeComponent();
Variable_en_1=Variable_pasada;
}