SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: izzi en Martes 23 de Octubre de 2007, 12:57

Título: Problema Con Mdi Al Cerrar
Publicado por: izzi en Martes 23 de Octubre de 2007, 12:57
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.
Título: Re: Problema Con Mdi Al Cerrar
Publicado por: cachorro en Martes 23 de Octubre de 2007, 23:35
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..
Título: Re: Problema Con Mdi Al Cerrar
Publicado por: izzi en Miércoles 24 de Octubre de 2007, 20:06
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.
Título: Re: Problema Con Mdi Al Cerrar
Publicado por: izzi en Miércoles 24 de Octubre de 2007, 20:16
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.
Título: Re: Problema Con Mdi Al Cerrar
Publicado por: Neopro en Miércoles 24 de Octubre de 2007, 23:50
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.
Título: Re: Problema Con Mdi Al Cerrar
Publicado por: izzi en Jueves 25 de Octubre de 2007, 19:35
Muchas Gracias Neopro, voy a porbar.



Un saludo y gracias.