我制作了一个带 MDI 窗体的程序,可以同时打开几个子窗体运行,开始觉得很好,但后来一想麻烦大了,我在关闭主窗体时如何判断还有子窗体未关闭?有些窗体必须先关闭后才能关闭主窗体.请各位告诉我一个办法,谢谢了!

解决方案 »

  1.   

    很简单,建立一个子程序,专门用于Unload 子窗体
    Sub UnloadChildForm()
       unload form1
       unload form2
       ....
       把所有子窗体写上
    End sub
    在MDIUnload过程的第一句执行本子程序,掂!
      

  2.   

    枚举(?) forms 的所有窗体,看你要的窗体是否在里面。如果是的话那么那个窗体就还没有被关闭掉。dim x as form,b as boolean
    for each x in forms
    if x is desiredForm then
    '还开着
    b=true
    exit for
    endif
    next
    if not b then
    '已经关闭了
    endif
      

  3.   

    for i=0 to forms.count-1
      unload forms(i)
    next i
      

  4.   

    Dim frm         As Form
        For Each frm In Forms
            If frm.Name <> mdi.Name Then
                Unload frm
            End If
        Next
      

  5.   

    其实很简单if mdiform.activeform is nothing
        unload mdiform
    endif
      

  6.   

    用一个end结束程序,所有窗体都关了
      

  7.   

    if not (mdiform.activeform is nothing) then 
       cancel=1
    end if
      

  8.   

    如果想在关闭主窗体时处理子窗体,如保存信息,可在QueryUnload中进行处理,如果此时想取消关闭过程,Cancel=1即可。
      

  9.   

    设立一个动态数组或集合,加入为动态数组aFormState()as byte,每打开一个窗口,Redim Preserve aFormState(gFormNum+1)设为1,改动设为2,关闭设为0,给打开的窗口的Tag属性赋值为窗口打开的序号。然后用aFormState(val(form.tag))判断状态。具体做法不用我说了吧?
      

  10.   

    给打开的窗口的Tag属性赋值为窗口打开的序号