Visual Basic.NET - Otra Vez Los MDI

 
Vista:

Otra Vez Los MDI

Publicado por Alfredo (62 intervenciones) el 03/08/2004 00:08:16
hola, tengo problemas con los formulaios MDI:
tengo mi formulario mdi, que tiene 3 formularios hijos, listo creo el primero:
Dim forma1 As New frmform1
Me.IsMdiContainer = True
forma1 .MdiParent = Me
asi mas o menos.
cuando doy click en el boton del menu me crea la forma, si le doy click otra vez me creo otra forma, eso es lo que no quiero.

entonces saco la creacion de la forma del boton y la dejo en la definicion de variables, funciona bien.

luego cargo mi segunda forma, al mostrarla se coloca encima de la primera, pero cuando le coloco la propìedad:
forma1..BringToFront()

esta se coloca delante de la 2da forma. hasta hay todo perfecto, pero llega el momento de cerrar mi forma1, cierra bien pero cuando se da click otra vez en el boton que la crea se desborda el programa, alguna ayuda muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Otra Vez Los MDI

Publicado por Edgar (1501 intervenciones) el 03/08/2004 00:30:01
Hola

Aparentemente el problema es que tratas de llamar al formulario que cerraste. Pregunta antes de hacer cualquier llamada a algún formulario si este ya está cerrado (comparalo con Nothing) antes de ejecutar alguna acción sobre algún formulario

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra Vez Los MDI

Publicado por Alfredo (62 intervenciones) el 03/08/2004 00:40:05
si, trato de llamar el mismo formulario que cerre, porque no quiero llamar otra instancia del mismo formulario, es decir si esta creado mustrelo, sino creelo. como sucedia en visual basic 6.0

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra Vez Los MDI

Publicado por Carlos Escribano Rey (59 intervenciones) el 05/08/2004 10:14:37
Eso es lo que me pasaba a mi. Yo lo solucioné con los sabios consejos de Edgar y Yamil. A mi compararlo con nothing no me funcionaba, porque no se guardaba Nothing en la variable contenedora del formulario al cerrarlo. Por este motivo tuve que utilizar una variable de control que me indicar si había abierto ya el formulario.

Suponemos que el formulario padre es Form1. El hijo es Form2. Si en Form1 utilizo una variable Form2Closed (boolean), cuando esté a True se que mi Form2 está cerrado.

Modifico mi Form2: añado un atributo, modifico el constructor y capturo el evento Closing.

Private PADRE as Form1

Public Sub New(ByVal MiPadre as Form1)
MyBase.New()

... (lo que mete .NET)

PADRE = MiPadre
PADRE.Form2Closed=False
End Sub

En la captura de closing digo algo así como:

PADRE.Form2Closed=True

En mi formulario Form1, al abrir el Form2 haría:

If Form2Closed=True Then
Dim F2 as new Form2(Me)
F2.Show()
End If

O lo que sea. No es realmente elegante. Si usas muchas ventanas te puedes liar. De hecho voy a empezar a practicar Yoga o algo así antes de pegarme un tiro, pero de momento me funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar