Como controlar formularios abiertos en una plicación MDI

20/06/2004 - 18:57 por Joan Carles Jiménez | Informe spam
Hola a todos!!

Estoy realizando una aplicación MDI. Desde el formulario principal,
llamo a los diferentes formularios utilizando una función del tipo (abre el
formulario de Agentes) ...

private void mMaestrosAgentes_Click(object sender, System.EventArgs e)
{
Form_Agentes fAgentes = new Form_Agentes();
fAgentes.MdiParent = this;
fAgentes.Show();
}

El problema que tengo es que cada vez que le doy a la opción, me abre un
nuevo formulario. ¿Como puedo controlar que el formulario ya està abierto y
que en ese caso simplemente me active el formulario? Gracias por adelantado.


Juan Carlos Jimenez
jjcarles@terra.es
 

Leer las respuestas

#1 lenin
14/01/2012 - 21:04 | Informe spam
Octavio Hernandez escribió el 21/06/2004 00:07 :
JC,

Haz que tu clase Form_Agentes (y los demás formularios hijos) implemente
un
patrón SINGLETON (única instancia). Normalmente se hace que el
constructor
sea privado (para que no se puedan crear instancias desde el exterior), y se
añade a la clase un método estático que genere la
única instancia, si no
existe aún, o devuelva la referencia a la instancia ya existente.
Más o
menos así:

public class Form_Agentes: Form
{
private Form_Agentes() : base()
{
// código del constructor
}
private static Form_Agentes instancia = null;
public static Form_Agentes Instancia
{
get
{
if (instancia == null)
instancia = new Form_Agentes();
return instancia;
}
}
// más...
}

Esto garantiza que sólo habrá una instancia de la clase, a la que
podrás
referirte mediante Form_Agentes.Instancia:

public class FormPrincipal: Form
{
private void mMaestrosAgentes_Click(object sender, System.EventArgs e)
{
Form_Agentes.Instancia.Show();
}
// ...
}

OJO: También habrá que programar la clase Form_Agentes para que
cuando el
usuario la cierre la instancia se ponga a null...

Salu2 - Octavio

"Joan Carles Jiménez"
escribió en el mensaje
news:
Hola a todos!!

Estoy realizando una aplicación MDI. Desde el formulario principal,
llamo a los diferentes formularios utilizando una función del tipo
(abre



el
formulario de Agentes) ...

private void mMaestrosAgentes_Click(object sender, System.EventArgs e)
{
Form_Agentes fAgentes = new Form_Agentes();
fAgentes.MdiParent = this;
fAgentes.Show();
}

El problema que tengo es que cada vez que le doy a la opción, me abre
un
nuevo formulario. ¿Como puedo controlar que el formulario ya
està abierto



y
que en ese caso simplemente me active el formulario? Gracias por



adelantado.


Juan Carlos Jimenez





OJO: También habrá que programar la clase Form_Agentes para que cuando el
usuario la cierre la instancia se ponga a null...
como hago eso por favor ayudenme como es el codigo para programar que al cerrar la ventana hijo que mi instancia=null

Preguntas similares