Form.owner

27/04/2006 - 20:46 por Manuel Bernal | Informe spam
hola chicos espero que me pueda ayudar con lo siguiente. tengo un formulario
principal en forma MDI padre el cual funciona perfectamente dentro de el
cargo un formulario hijo de forma excelente sin ningun problema hasta ese
nivel todo bien, dentro del formulario hijo creo un tercer formulario el cual
quiero que dependa dependa del formulario hijo es decir si minimizo el hijo
que se minimize este tercer formulario si cierro el hijo que se cierre el
formulario, hasta ahorita sucede algo curioso si minimizo el hijo el tercer
fomularios se queda en pantalla pero si cierro el formulario hijo el tercer
formulario si se cierra. mi codigo es el siguiente.

El codigo para crear el formulario hijo es el siguiente apartir del padre MDI

Dim NewMDIChild As New Form2
NewMDIChild.MdiParent = Me
NewMDIChild.Show()

El codigo para generar el tercer formulario apartir del hijo es el siguiente
Dim frmtercero As New Form4
frmtercero.Owner = Me
frmtercero.Show()

leei todos los comentarios acerca de mdi que se encuentra en este foro y no
tuve la capacidad de visualizar si uno de ellos era mi solución.

de antemano gracias a todos los que respondan mi mensaje




L.I. Manuel Bernal
 

Leer las respuestas

#1 Luis Miguel Blanco
28/04/2006 - 11:39 | Informe spam
Hola Manuel

En teoría, cuando un formulario se ha creado como dependiente de otro, si
minimizas el formulario que ha establecido la dependencia, también se debería
de minimizar el dependiente.

Esto funciona perfectamente cuando lo haces usando formularios que no estén
contenidos o relacionados con un formulario MDI. Sin embargo, en cuanto un
formulario lo configuras como hijo de un MDI, si el hijo abre a su vez otro
formulario y lo hace dependiente suyo, cuando minimices el hijo, no se
minimizará el dependiente. Este comportamiento es debido a la particular
naturaleza del funcionamiento de un formulario cuando pertenece a un MDI.

Para conseguir este comportamiento en un escenario de trabajo como el tuyo,
en el que tienes un MDI, puedes probar desde el formulario hijo del MDI a
obtener la colección de formularios dependientes y minimizarlo manualmente.
Te acompaño un ejemplo de código:

'/////////////////////////////////////////////
' este es el formulario MDI, en el que abrimos un formulario
' que configuramos como hijo
Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem2.Click
Dim frmHijo As frmHijoMDI = New frmHijoMDI
frmHijo.MdiParent = Me
frmHijo.Show()
End Sub
End Class

' este es el formulario hijo del MDI, en el que al pulsar un botón
' abrimos otro formulario que hacemos dependiente de este
' y en el evento de cambio de tamaño de este formulario,
' accedemos a la colección de formularios dependientes y en
' el caso de que lo estemos minimizando, también minimizamos el dependiente
Public Class frmHijoMDI
Inherits System.Windows.Forms.Form

Private Sub btnDependiente_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnDependiente.Click
Dim frmDep As frmDependiente = New frmDependiente
Me.AddOwnedForm(frmDep)
frmDep.Show()
End Sub

Private Sub frmHijoMDI_SizeChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.SizeChanged
If Me.WindowState = FormWindowState.Minimized Then
For Each oForm As Form In Me.OwnedForms
oForm.WindowState = FormWindowState.Minimized
Next
End If
End Sub

End Class
'/////////////////////////////////////////////

Espero que te sirva de ayuda para resolver tu problema.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Manuel Bernal" wrote:

hola chicos espero que me pueda ayudar con lo siguiente. tengo un formulario
principal en forma MDI padre el cual funciona perfectamente dentro de el
cargo un formulario hijo de forma excelente sin ningun problema hasta ese
nivel todo bien, dentro del formulario hijo creo un tercer formulario el cual
quiero que dependa dependa del formulario hijo es decir si minimizo el hijo
que se minimize este tercer formulario si cierro el hijo que se cierre el
formulario, hasta ahorita sucede algo curioso si minimizo el hijo el tercer
fomularios se queda en pantalla pero si cierro el formulario hijo el tercer
formulario si se cierra. mi codigo es el siguiente.

El codigo para crear el formulario hijo es el siguiente apartir del padre MDI

Dim NewMDIChild As New Form2
NewMDIChild.MdiParent = Me
NewMDIChild.Show()

El codigo para generar el tercer formulario apartir del hijo es el siguiente
Dim frmtercero As New Form4
frmtercero.Owner = Me
frmtercero.Show()

leei todos los comentarios acerca de mdi que se encuentra en este foro y no
tuve la capacidad de visualizar si uno de ellos era mi solución.

de antemano gracias a todos los que respondan mi mensaje




L.I. Manuel Bernal

Preguntas similares