Hola Joaquín
Respecto a la cuestión que comentas del formulario que se abre maximizado
cuando lo tienes configurado como normal, no es una cuestión de mal
funcionamiento, sino de conceptos sobre la arquitectura de Windows, intentaré
explicarte el motivo de este comportamiento sobre el que ya comenté hace unas
semanas a otra persona que expuso el mismo problema:
La funcionalidad básica de una ventana MDI consiste en actuar como
contenedora de otras ventanas hijas, utilizando su superficie (la de la
ventana MDI) como espacio de trabajo para dichas ventanas hijas.
Cuando abrimos varias ventanas hijas no maximizadas dentro de una MDI, dado
que su propiedad WindowState es Normal, podemos mantener el tamaño de cada
una de estas ventanas y pasar el foco entre las mismas, puesto que aunque sea
mínimo, la ventana MDI dispone en su superficie de un espacio compartido para
representarlas/mostrarlas todas. Haz la siguiente prueba: en primer lugar
añade un MenuItem al MainMenu de la MDI, y en su propiedad MdiList le asignas
el valor True, con ello tendrás en la MDI el clásico menú desplegable con una
opción por cada ventana hija que abras dentro de la MDI. A continuación abre
sin maximizar las dos ventanas hijas, a una de ellas le das tamaño suficiente
para que abarque toda la superficie de la MDI, pero siempre sin maximizar;
ahora pasa al menú de la MDI, y selecciona la otra ventana hija, verás como
se sitúa encima de la que acabas de redimensionar. En este caso tienes ambas
ventanas disponibles, pero también ten en cuenta que ninguna está maximizada.
Sin embargo, en cuanto maximizas una de las ventanas hijas, dicha ventana
maximizada ocupa todo el área cliente de la ventana MDI, y en este caso, a la
MDI le resulta imposible representar simultáneamente más de una ventana, es
decir, que en ese momento si intentamos "traer" a primer plano una ventana
hija con WindowState Normal por encima de la ventana hija maximizada, Windows
no dispone de una pequeña porción de superficie de la ventana MDI para
mostrar la ventana hija normal, ya que todo el área de trabajo de la MDI está
siendo ocupado por la que actualmente tenemos maximizada. Para resolver esto,
y siempre y cuando haya una ventana hija maximizada, Windows cambia el
WindowState de todas las hijas a Maximized.
Prueba lo siguiente: pon la propiedad WindowState de las dos ventanas hijas
a Normal, ejecuta la aplicación y abre las ventajas hijas; maximiza una de
ellas, y mediante el menú de ventana que has añadido a la MDI pasa a la otra
hija, verás que también se ha maximizado sin que tú hicieras nada, esto ha
sido debido al comportamiento de Windows que te he explicado anteriormente.
Para que además no pienses que tienes "duendes" en tu aplicación, puedes
probarlo con cualquier aplicación "oficial" que tenga una estructura MDI.
Access es el más claro ejemplo de ello. Abre Access y una base de datos.
Seguidamente abre un par de tablas y maximiza cualquiera de las ventanas
hijas que tengas en ese momento abiertas en Access. Finalmente, desde el menú
Ventana de Access, pasa a cualquier otra ventana hija que originalmente no
estaba maximizada, "et voilá", ahora sí lo estará.
Espero que todo este rollo que acabo de soltar te sea de utilidad 8-)
--
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
Post by JoaquÃn Zarco GomisSolo lo he logrado solucionar dando al formulario el temaño máximo.
Por otro lado si abro un formulario maximizado y luego abro otro que tiene
puesto que se abra normal, en lugar de abrirlo normal lo maximiza
"Jorge Serrano [MVP VB]"
Post by Jorge Serrano [MVP VB]Hola,
estoy creando una mini demo con un control ToolStrip con botones estándar.
Private Sub NuevoToolStripButton_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles NuevoToolStripButton.Click
Dim MiF As New Form2
MiF.MdiParent = Me
MiF.WindowState = FormWindowState.Maximized
MiF.Show()
End Sub
Evidentemente, el primer Formulario (Form1) es el padre y el Form2 el hijo.
Los formularios hijos aparecen maximizados.
¿Qué código estás utilizando?.
Un saludo.
--
Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/
Post by JoaquÃn Zarco GomisHola a todos.
Tengo una aplicación MDI en Visual Basic.net 2005 y en el formulario
hijo le indico que arranque maximizado, pero el borde del formulario no se
extiende dentro del formulario padre (aunque si el controlbox).
Esto es un bug? ¿o estoy haciendo algo mal?
También noto problemas de refresco en controles dentro de un splitContainer