• Lunes 18 de Noviembre de 2024, 01:15

Autor Tema:  Problemas con componente MDI  (Leído 1145 veces)

carl3068

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Problemas con componente MDI
« en: Lunes 26 de Octubre de 2009, 03:10 »
0
Buenas noches, soy nuevo y me gustaria integrarme a esta comunidad.

Bueno mi primera duda es la siguiente, espero me la puedan responder. Tengo 4 formularios, de los cuales 1 es padre y 3 son hijo.

Dentro del formulario padre tengo un boton para cada uno de los otros formularios, con el cual los mando llamar. La cuestion es que cada vez que le doy click a un boton me aparece el formulario hijo tantas veces le doy al boton, asi que necesito que solo me abra el formulario hijo solamente un vez aunque de muchos click.

Espero me puedan, ayudar. Gracias!   :beer:

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Problemas con componente MDI
« Respuesta #1 en: Lunes 26 de Octubre de 2009, 09:00 »
0
podrias hacer por ejemplo:

habres la declaración fuera de los eventos click.

Form2 mdi1;
Form3 mdi2;
Form4 mdi3;

Luego en los eventos Click de los botones pones:

if(mdi1==null)
   {
         mdi1 = new Form2();
         mdi1.Show();   //bueno aqui ya lo abres como quieras, pongo show como ejemplo
   }

espero te sirva, saludos

gerardoskype

  • Miembro activo
  • **
  • Mensajes: 50
  • Nacionalidad: mx
    • Ver Perfil
Re: Problemas con componente MDI
« Respuesta #2 en: Martes 27 de Octubre de 2009, 03:08 »
0
Bueno, que yo sepa cuando usas mdicontainer no puedes establecer  Formulario.ShowDialog(); porque te marca error.

por otro lado yo utilizo el siguiente codigo para llamar solo 1 vez al form.hijo


 foreach (Form f in this.MdiChildren)
            {
                if (f.Name == "Nombre del Formulario a llamar")
                {
                    f.Activate();
                    return;
                }
            }
            Proveedor frm = new Proveedor();
            frm.MdiParent = this;
            frm.WindowState = FormWindowState.Maximized;
            frm.Show();


y para cuando llamo a otro sin haber cerrado el primero.

 private void "Formulario.hijo"_Deactivate(object sender, EventArgs e)
        {
            this.Dispose();
        }
para cerrarlo. y cuando lo llamas solo se actualizo. no se abrio tantas veces como lo hacia antes.

espero te sirva, tenia otro pero en el momento no lo recuerdo.