Formularios MDI

05/04/2005 - 23:55 por Rocío | Informe spam
Hola a todos!!!

Estoy implementando formularios MDI en una aplicación que
sigue el siguiente esquema:

1 Formulario padre P.
3 Forms hijos A, B y C.

La cuestión es que yo quiero controlar desde el menúItem
que abre el form A, cuántas instancias de A tengo
abiertas en P, de tal modo que pueda limitar el número
máximo de instancias.

¿Alguien sabe como hacerlo?



Muchas Gracias.

Chao.

Preguntas similare

Leer las respuestas

#1 Rocio
07/04/2005 - 02:12 | Informe spam
Ok. Gracias Marino.

Lo he probado y me funciona. Pero esto me ha llevado a
otro punto: ¿Que ocurre si quiero ocultar el formulario
en un momento determinado y luego quiero volver a
mostrarlo? Si yo cierro el formulario, cierro la
instancia, por lo que cuando intento volver a abrirlo, me
genera una excepción. Y también he probado con hacerlo
visible o no, pero llega un memento en el que ya no
vuelve a aparecer. ¿Que hago?


Gracias.


Lo correcto es implementar el patrón Singleton, del que


encontrarás
abundante documentación por la red y el MSDN. No


obstante podrías
controlarlo utilizando un remedio más "casero", mediante


el uso de la
colección MdiChildren del formulario. La recorres, y si


coincide que ya
está, no lo cargas.


Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net



"Rocío" escribió


en el mensaje
news:021c01c53a2a$33780bf0$
Hola a todos!!!

Estoy implementando formularios MDI en una aplicación que
sigue el siguiente esquema:

1 Formulario padre P.
3 Forms hijos A, B y C.

La cuestión es que yo quiero controlar desde el menúItem
que abre el form A, cuántas instancias de A tengo
abiertas en P, de tal modo que pueda limitar el número
máximo de instancias.

¿Alguien sabe como hacerlo?



Muchas Gracias.

Chao.


.

Respuesta Responder a este mensaje
#2 Octavio Hernandez
07/04/2005 - 09:12 | Informe spam
Si los cierras, deberás volver a crearlo la próxima vez. En el evento Closed
del formulario podrías establecer una "señal" que te indique si el objeto
existe o no.

Slds - Octavio

"Rocio" escribió en el mensaje
news:0d9601c53b06$70d66af0$
Ok. Gracias Marino.

Lo he probado y me funciona. Pero esto me ha llevado a
otro punto: ¿Que ocurre si quiero ocultar el formulario
en un momento determinado y luego quiero volver a
mostrarlo? Si yo cierro el formulario, cierro la
instancia, por lo que cuando intento volver a abrirlo, me
genera una excepción. Y también he probado con hacerlo
visible o no, pero llega un memento en el que ya no
vuelve a aparecer. ¿Que hago?


Gracias.


Lo correcto es implementar el patrón Singleton, del que


encontrarás
abundante documentación por la red y el MSDN. No


obstante podrías
controlarlo utilizando un remedio más "casero", mediante


el uso de la
colección MdiChildren del formulario. La recorres, y si


coincide que ya
está, no lo cargas.


Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net



"Rocío" escribió


en el mensaje
news:021c01c53a2a$33780bf0$
Hola a todos!!!

Estoy implementando formularios MDI en una aplicación que
sigue el siguiente esquema:

1 Formulario padre P.
3 Forms hijos A, B y C.

La cuestión es que yo quiero controlar desde el menúItem
que abre el form A, cuántas instancias de A tengo
abiertas en P, de tal modo que pueda limitar el número
máximo de instancias.

¿Alguien sabe como hacerlo?



Muchas Gracias.

Chao.


.

Respuesta Responder a este mensaje
#3 Marino Posadas
08/04/2005 - 01:38 | Informe spam
Hola Rocio

Pues a propósito de lo que comenta Octavio, se me ha ocurrido una solución
que -en las pruebas que he hecho- me funciona perfectamente.

En el formulario a ocultar (y que podría ser llamado más de una vez), en el
evento Closing, inlcuyes lo siguiente (yo hice la prueba con un formulario
llamado frmSplash que muestra una ventana sin borde a modo de logo inicial
de la aplicación):

private void frmSplash_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
this.SetVisibleCore(false);
this.Text = "Oculto";
e.Cancel = true;
}

y en el formulario padre, en el método que hace la llamada, podríamos hacer
esto:

//Comprobamos la existencia del formulario
foreach (Form f in this.MdiChildren) {
if (f is frmSplash)
{
if (f.Visible == false)
{
f.Visible=true;
return;
}
else return;
}
}
frmSplash fa = new frmSplash();
fa.FormBorderStyle = FormBorderStyle.FixedSingle;
fa.timer1.Stop();
fa.timer1.Enabled=false;
fa.MdiParent = this;
fa.Show();

Y a mi, esto me funciona perfectamente.


Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net


"Rocio" escribió en el mensaje
news:0d9601c53b06$70d66af0$
Ok. Gracias Marino.

Lo he probado y me funciona. Pero esto me ha llevado a
otro punto: ¿Que ocurre si quiero ocultar el formulario
en un momento determinado y luego quiero volver a
mostrarlo? Si yo cierro el formulario, cierro la
instancia, por lo que cuando intento volver a abrirlo, me
genera una excepción. Y también he probado con hacerlo
visible o no, pero llega un memento en el que ya no
vuelve a aparecer. ¿Que hago?


Gracias.


Lo correcto es implementar el patrón Singleton, del que


encontrarás
abundante documentación por la red y el MSDN. No


obstante podrías
controlarlo utilizando un remedio más "casero", mediante


el uso de la
colección MdiChildren del formulario. La recorres, y si


coincide que ya
está, no lo cargas.


Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net



"Rocío" escribió


en el mensaje
news:021c01c53a2a$33780bf0$
Hola a todos!!!

Estoy implementando formularios MDI en una aplicación que
sigue el siguiente esquema:

1 Formulario padre P.
3 Forms hijos A, B y C.

La cuestión es que yo quiero controlar desde el menúItem
que abre el form A, cuántas instancias de A tengo
abiertas en P, de tal modo que pueda limitar el número
máximo de instancias.

¿Alguien sabe como hacerlo?



Muchas Gracias.

Chao.


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida