maximizar ventana hija, se maximizan todas

21/10/2006 - 01:00 por Gastoncito | Informe spam
Hola tengo un form mdicontainer...

con varias forms hijos...

al maximizar uno de estos, se maximizan los restantes

esto se puede evitar?
 

Leer las respuestas

#1 SoftJaén
21/10/2006 - 11:25 | Informe spam
"Gastoncito" escribió:

tengo un form mdicontainer...

con varias forms hijos...

al maximizar uno de estos, se maximizan los restantes

esto se puede evitar?



Hola:

Pues que yo sepa, no se puede, debido a que entiendo que es una
característica propia de la interfaz de múltiples documentos, donde los
documentos MDI secundarios, se entienden que son todos iguales (un mismo
documento de texto, un mismo formulario de datos, etc.), por lo que si uno
está maximizado, lo estarán todos los que están detrás de dicho formulario,
cuestión ésta que se podrá observar una vez que se cierre el formulario
actualmente activo, y que se encontraba maximizado dentro del área cliente
del formulario MDI principal.

Lo único que veo por ahora que puedes hacer, es detectar precisamente el
cierre del formulario hijo que actualmente se encuentra maximizado, y
establecer el valor adecuado de la propiedad «WindowState», al nuevo
formulario hijo activo.

Por ejemplo, en el evento «Disposed» de los formularios hijos detectarías el
cierre del formulario, y llamarías a un procedimiento público incluido en el
formulario padre, para detectar el nuevo formulario hijo activo y establecer
el nuevo estado de la ventana.

En el formulario hijo ejecutarías lo siguiente:

Private Sub FormChild_Disposed( ...) Handles Me.Disposed
FormParent.GetActiveMDIChild()
End Sub

Y en el formulario padre ejecutarías el siguiente procedimiento:

Public Sub GetActiveMDIChild()

' Determinamos el formulario hijo que
' actualmente se encuentra activo.
'
Dim activeChild As Form = Me.ActiveMdiChild

' Establecemos el estado normal del formulario hijo
'
activeChild.WindowState = FormWindowState.Normal

End Sub

Lo mismo, hasta te puede interesar organizar en cascada el resto de los
formularios hijos actualmente abiertos. Para ello, en el mismo
procedimiento, en lugar de establecer el estado normal del formulario hijo,
organizarías los formularios secundarios MDI:

' Organizamos los formularios en cascada.
'
Me.LayoutMdi(MdiLayout.Cascade)

En fin, es lo único que por ahora se me pasa por la cabeza. :-)

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares