• Viernes 1 de Noviembre de 2024, 13:18

Autor Tema:  Problema Con Mdi Al Cerrar  (Leído 3628 veces)

izzi

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Problema Con Mdi Al Cerrar
« en: Martes 23 de Octubre de 2007, 12:57 »
0
Hola,

Tengo un pequeño problemilla y es el siguiente, tengo un form MDIParent y dentro de ese form tengo unos botones que cargan otros forms, la carga del form lo hago de la siguiente manera, el problema es cuando cierro el form hijo e intento volver a abrirlo pinchando en el boton me salta un error
Código: Text
  1. +    $exception  {"No se puede obtener acceso al objeto eliminado.\r\nNombre del objeto: 'Facturacion'."}  System.Exception {System.ObjectDisposedException}
  2.  
  3.  
Cual puede ser el motivo, hago algo mal

Código: Text
  1.  
  2.         private void Facturacion_Click(object sender, EventArgs e)
  3.         {
  4.             this.Web_AS.Visible = false;
  5.             Program.form.fcliente.Visible = false;
  6.             Program.form.ffactura.MdiParent = this;
  7.             Program.form.ffactura.Show();
  8.         }
  9.  

Aparte de ese problema, ayer de repente al compilar en vez de sacarme el error indicando la linea de codigo me saca el error con el visual debuger y me da un error en vshost.exe, es muy raro y tampoco se como solucionarlo, lo unico que veo es volver a empezar de 0 ya que creando un proyecto nuevo y cargando los elementos existentes me falla porque no encuentra los dataset y eso que los cargo tambien, en fin, he empezado la semana con mal pie.

A ver si me podeis aconsejar porfavor.


Un saludo y muchas gracias.

cachorro

  • Miembro MUY activo
  • ***
  • Mensajes: 196
  • Nacionalidad: ec
    • Ver Perfil
    • http://www.pumamix.com
Re: Problema Con Mdi Al Cerrar
« Respuesta #1 en: Martes 23 de Octubre de 2007, 23:35 »
0
saludos izzi....bueno para abrir un form hijo solo lo haces asi.....

Form1 frm1= new Form1();
frm1.MdiParent = this;
frm1.show();

No se que es lo q necesitas o q quieres ahcer utilizando el Program.....?????
Bueno intenta con el code q t coloque...epero aberte ayudado...saludos..
La Vida es un Reto..Enfrentala....

izzi

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Problema Con Mdi Al Cerrar
« Respuesta #2 en: Miércoles 24 de Octubre de 2007, 20:06 »
0
Cita de: "cachorro"
saludos izzi....bueno para abrir un form hijo solo lo haces asi.....

Form1 frm1= new Form1();
frm1.MdiParent = this;
frm1.show();

No se que es lo q necesitas o q quieres ahcer utilizando el Program.....?????
Bueno intenta con el code q t coloque...epero aberte ayudado...saludos..
Saludos cachorro,

Muchas gracias, ya lo tengo solucionado. ;)




Un saludo y gracias.

izzi

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Problema Con Mdi Al Cerrar
« Respuesta #3 en: Miércoles 24 de Octubre de 2007, 20:16 »
0
cachorro, como puedo hacer para que compruebe si el form ya esta creado antes de crearlo, es decir, ahora si le pego 10 veces al boton me crea 10 forms, y claro me gustaria poder controlarlo de alguna forma, es posible ello.



Muchas gracias.

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Problema Con Mdi Al Cerrar
« Respuesta #4 en: Miércoles 24 de Octubre de 2007, 23:50 »
0
Controlalo Asi:

Código: Text
  1.            
  2.  // Crea una nueva instancia del formulario secundario.
  3.             Form1 childForm = new Form1();
  4.             // Conviértelo en un elemento secundario de este formulario MDI antes de mostrarlo.
  5.             childForm.MdiParent = this;
  6.             //childFormNumber = childFormNumber + 1;
  7.             childForm.Text = "Titulo de la ventana";//  - Ventana Nº " + childFormNumber++;
  8.             //childForm.Show();
  9.             //Barremos las formas que hay en el parent para encontrar la referencia
  10.             foreach (Form f in this.MdiChildren)
  11.             {
  12.                 if (f is Form1)
  13.                 {
  14.                     childForm = (Form1)f;
  15.                     break;
  16.                 }
  17.             }
  18.             //Si la encontró ya no necesita la instancia solo la mostramos
  19.             if (childForm != null)
  20.             {
  21.                 childForm.Show();
  22.                 childForm.Focus();
  23.             }
  24.             else
  25.             {
  26.                 //No se ha creado por lo tanto generamos la instancia
  27.                 childForm = new Form1();
  28.                 childForm.MdiParent = this;
  29.                 childForm.Show();
  30.                 childForm.Focus();
  31.             }
  32.  

Eso hazlo dentro de una llamada a un form, sea como sea, un boton, menu, etc...

Hay cosas comentadas que no utilizo...

Suerte.
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

izzi

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Problema Con Mdi Al Cerrar
« Respuesta #5 en: Jueves 25 de Octubre de 2007, 19:35 »
0
Muchas Gracias Neopro, voy a porbar.



Un saludo y gracias.