刚做了测试,mdi的子窗体如果没有unload,则主窗体也无法unload
我是这样试的,一个mdi主窗体,然后加入几个mdi子窗体,即设置mdichild为true,
然后,在任何一个mdi子窗体中的unload事件中,加入代码:
cancel=1则此时,mdi主窗体执行unload时,无法自已卸载自已。
可见,vb自已本身就保证了,mdi子窗体没有卸载前,主窗体是不会卸载的。不知我的测试结论正确吗?

解决方案 »

  1.   

    你在unload事件中写入cancel=1 就意味着取消关闭。这不是MDI的问题,所有的窗体都是的。
    你在任何一个Form的Unload事件中加入以下代码看看就懂了:Private Sub Form_Unload(Cancel As Integer)
        
        Debug.Print Cancel        '可以查看下,触发了Unload事件时,Cancel默认为1
        If MsgBox("是否关闭窗体", vbYesNo, "关闭窗体") = vbYes Then
            Cancel = 0
        Else
            Cancel = 1           '取消关闭窗体
        End If
        
    End Sub
      

  2.   

    不好意思,楼上看错了。确实是mdi子窗体没有卸载前,主窗体是不会卸载的
    在关闭MDI窗体时,会自动遍历关闭所有已打开的子窗体。子窗体没关闭成功,则不会触发父窗体关闭事件。