Cuarenta (40) de estos formularios se abren y cierran perfectamente según lo esperado. Pero dos de ellos no, y no consigo saber por qué.
La cosa es así:
- Hay una barra lateral que se usa para seleccionar el Form a instanciar y mostrar. La misma es un OCX libre cuyo NameSpace es vbAccelerator.
- Cuando se selecciona una de las opciones, se recurre a un Select Case que en cada caso invoca una variable Friend para ese formulario. En esa Case hay un código como este:
Código vb:
- aForms es una variable de clase Form, cuyo objetivo es simplificar al código de cierre, que se invoca antes de abrir un formulario: Ver original
Case "DESCARGAS ANALIZADAS" oListDescargas = New FormListadoDescargas aForms = oListDescargas With oListDescargas .MdiParent = Me .Dock = DockStyle.Fill .Show() End With
Código vb:
- Cada vez que se selecciona otro formulario, previamente se verifica que no haya uno abierto y de haberlo, este se cierra con esa llamada.Ver original
If Not aForms Is Nothing Then aForms.Close() End If
- Los 40 formularios mencionados funcionan bien. Cuando se debuggea en ese punto se puede ver cómo todos los Form van desapareciendo efectivamente.
- Cuando se trata de estos dos formularios, en el debugeo se puede ver que reconoce que está instanciado y que efectivamente invoca al .Close, pero no produce ningún efecto. Nada.
- Si en el debuggeo verifico el valor de Me.MdiChildren, se puede ver que cada vez que se llama a uno de esos formularios, la colección de Me.MdiChildren se va incrementando de a uno, y se puede apreciar que el nombre de la clase que se acumula se corresponde con el Form invocado, así que efectivamente no los está eliminando como a los demás.
- Los dos formularios en cuestión sólo tienen en común que contienen un Control OCX freeware (PieChart) para representar un grafico estadístico de torta (pie). Pero si elimino el objeto del formullario, aún así sigue sucediendo lo mismo, por lo que no parece ser ese el problema.
En definitiva, dos preguntas:
- ¿Alguna idea de por qué el .Close no está funcionando?
- ¿De qué forma puedo forzar a un form que no responde a cerrarse?