MDI y formularios Padres

12/09/2006 - 10:24 por solusoft | Informe spam
Hola, a todos, estoy trabajando con MDI.

Tengo esta situación, tengo un formulario que llamamos Parent, que tiene
MdiParent asignado al formulario principal.

Parent abre otro formulario llamado Child, al que establecemos MdiParent el
formulario principal.

Al ser MDI, tenemos los dos formularios parent y Child en el contenedor MDI
(el formulario principal).

Child tiene establecido un evento Closing, definido en la clase Parent.

Cerramos el formulario Parent, y solo se queda abierto el formulario Child.
Qué pasaría con ese evento Closing ???

// in Parent - que es MDI
void CreateChildForm()
{
MyChild mc = new MyChild();
mc.MdiParent = FormularioMDIParentQueNOEsEsteMismoFormulario;
mc.Closing += new CancelEventHandler(OnChildClosing);
mc.Show();

// Pruebas - simulo que el usuario cierra este formulario
this.Close();
}

// this method will be called whenever a MyChild
// form is closed if it is created as shown above
void OnChildClosing(object sender, CancelEventArgs e)
{
// QUE PASA EN ESTE MOMENTO, SI ME HAN CERRADO EL FORMULARIO PARENT, Se
ejecuta este método, pero cómo se que lo han cerrado ???
this.Metodo();
}


Alguien puede aclararme un pco más, gracias.
 

Leer las respuestas

#1 Alberto Poblacion
12/09/2006 - 10:38 | Informe spam
"solusoft" wrote in message
news:
Cerramos el formulario Parent, y solo se queda abierto el formulario
Child.
Qué pasaría con ese evento Closing ???



No pasaría nada. Aunque cierres el formulario, el correspondiente objeto
(la instancia de la clase) no es liberado por el recogedor de basura
mientras que exista alguna referencia apuntando a él. Y el evento es una
referencia, por lo que mientras el evento esté conectado, se mantiene viva
en memoria la instancia que contiene la rutina a la que está conectado el
evento.
Lógicamente, se producirá un error en el caso de que dentro de la rutina
de tratamiento del evento se intente hacer una llamada a alguna
funcionalidad del formulario que no sea lícito invocar cuando el formulario
está cerrado.

Preguntas similares