Discussion:
No se maximiza un formulario MDIChild
(demasiado antiguo para responder)
Joaquín Zarco Gomis
2006-05-03 17:40:22 UTC
Permalink
Hola 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
Jorge Serrano [MVP VB]
2006-05-03 18:56:02 UTC
Permalink
Hola,

estoy creando una mini demo con un control ToolStrip con botones estándar.

En el primero de ellos escribo el siguiente código:

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 Gomis
Hola 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
Joaquín Zarco Gomis
2006-05-04 06:33:24 UTC
Permalink
Hola Jorge, gracias por la respuesta

Uso el mismo código que indicas pero no me funciona. Parece que se
maximiza porque los botones de minimizar y maximizar están bajo los
correspondientes del formulario padre, pero el borde del formulario tiene el
mismo tamaño que en diseño.


"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 Gomis
Hola 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
Joaquín Zarco Gomis
2006-05-04 07:45:19 UTC
Permalink
Solo 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 Gomis
Hola 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
Luis Miguel Blanco
2006-05-04 08:46:02 UTC
Permalink
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 Gomis
Solo 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 Gomis
Hola 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
Joaquín Zarco Gomis
2006-05-04 11:26:46 UTC
Permalink
Muchas gracias por el mensaje, me ha quedado bastante claro el tema de que
como funcionan las ventanas MDI.

El otro problema de que al abrir un formulario maximizado queda
recortado el borde lo he resuelto asignando al formulario el tamaño máximo
porque de lo contrario me aparece los botones del Controlbox en su lugar
(como si estuviese maximizado). El resto del formulario se ajusta a la
posición 0,0 (sin mostrar el título como si estuviera maximizado también)
pero el ancho y alto del formulario no cambia y se muestra con el tamaño
definido por size.
Post by Luis Miguel Blanco
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
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 Gomis
Solo 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 Gomis
Hola 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
Ceiger
2006-05-08 10:57:23 UTC
Permalink
A mi me pasa exactamente lo mismo. Si te das cuenta, si minimizas la
aplicacion y la vuelves a maximizar, veras que buala, sale el form
maximizado.Incluso si abres otro form despues de este, el segundo siempre lo
dibuja bien. Creo que es un bug, yo acabo de crear un form nuevo, le he
copiado todos los controles y el codigo, y ahora funciona bien, me lo dibuja
maximizado, pero me da un error al salir del form: "La cadena de ordenación
contiene una propiedad que no está en IBindingList."

Ya ves, misterios de la informatica.


Saludos.
Post by Joaquín Zarco Gomis
Muchas gracias por el mensaje, me ha quedado bastante claro el tema de que
como funcionan las ventanas MDI.
El otro problema de que al abrir un formulario maximizado queda
recortado el borde lo he resuelto asignando al formulario el tamaño máximo
porque de lo contrario me aparece los botones del Controlbox en su lugar
(como si estuviese maximizado). El resto del formulario se ajusta a la
posición 0,0 (sin mostrar el título como si estuviera maximizado también)
pero el ancho y alto del formulario no cambia y se muestra con el tamaño
definido por size.
Post by Luis Miguel Blanco
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
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 Gomis
Solo 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 Gomis
Hola 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
Ceiger
2006-05-08 16:51:52 UTC
Permalink
He estado editando el archivo .designer.vb del form que me da problemas, y
me he dado cuenta que si no tengo esta linea en donde se deblara los
controles que hay en el form, no me funciona, pongo esta linea, y me
maximiza bien el form. El tema, es que yo he asignado la variable
windowsstate del form, ha una variable de configuracion del sistema.
Me.DataBindings.Add(New System.Windows.Forms.Binding("WindowState",
Global.GestionComercial.My.MySettings.Default, "Tama€oVentana", True,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))

Haber si alguien lo entiende.

Saludos.
Post by Ceiger
A mi me pasa exactamente lo mismo. Si te das cuenta, si minimizas la
aplicacion y la vuelves a maximizar, veras que buala, sale el form
maximizado.Incluso si abres otro form despues de este, el segundo siempre
lo dibuja bien. Creo que es un bug, yo acabo de crear un form nuevo, le he
copiado todos los controles y el codigo, y ahora funciona bien, me lo
dibuja maximizado, pero me da un error al salir del form: "La cadena de
ordenación contiene una propiedad que no está en IBindingList."
Ya ves, misterios de la informatica.
Saludos.
Post by Joaquín Zarco Gomis
Muchas gracias por el mensaje, me ha quedado bastante claro el tema de
que como funcionan las ventanas MDI.
El otro problema de que al abrir un formulario maximizado queda
recortado el borde lo he resuelto asignando al formulario el tamaño
máximo porque de lo contrario me aparece los botones del Controlbox en su
lugar (como si estuviese maximizado). El resto del formulario se ajusta a
la posición 0,0 (sin mostrar el título como si estuviera maximizado
también) pero el ancho y alto del formulario no cambia y se muestra con
el tamaño definido por size.
Post by Luis Miguel Blanco
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
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 Gomis
Solo 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 Gomis
Hola 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
Loading...