有一个会话程序,期间就像MSN Messenger那样,弹出了数目不定的窗口,如何在关闭主程序时,同时关掉所有打开的窗口?

解决方案 »

  1.   

    主窗体使用mdi窗体的话关闭mdi窗体自动关掉所有mdichild窗体或者使用一个数组变量,当从窗体form1打开另外的窗体的时候进行赋值,最后关闭所有窗体Dim Frm(100) As Form
    Private Sub Command2_Click()
    Dim I As Integer
    I = UBound(Frm)
    Set Frm(I) = Form2
    Form2.Show
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    On Error Resume Next
    For I = 1 To UBound(Frm)
        Unload Frm(I)
    Next
    End Sub
      

  2.   

    Dim openform(100) As Form
    Dim formflag As Integer
    Private Sub Command1_Click()
    Form2.Show
    Form3.Show
    saveform Form2
    saveform Form3End Sub
    Private Sub saveform(tmpform As Form)  Set openform(formflag) = tmpform
      
      formflag = formflag + 1
      
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
    For i = 0 To formflag
       Unload openform(i)
    Next
    End Sub
      

  3.   

    和楼上说的大致一样,可用MDI窗口(代码如上述),如果还是不懂,可以用一种最原始的方法,就是之前Show了什么窗体,就Unload什么窗体!Show的使用方法:
    Object(窗体).showUnload的使用方法:
    Unload Object(窗体)
      

  4.   

    我说的不是MDI,所有的都可以
      

  5.   

    dim frm as form
    dim obj as object
    for each frm in vb.forms
    for each obj im frm.comtrols
    set obj=nothing
    next obj
    unload frm
    next frm**************************
    for each frm in vb.forms
    if not frm is me then unload frm
    next
    unload me
      

  6.   

    dim i as integerfor i =forms.count-1 to 1
    unload forms(i)
    next这段代码可以关闭除了执行这段代码的窗体外的所有窗体。
      

  7.   

    針對mdi
    題:如何一次關閉 MDIForm 內的所有子表單? 
    來源:Tai Choo Tack / VISUAL BASIC PROGRAMMER'S JOURNAL 
    版本:VB6 / VB5 / VB4-32 / VB4-16 / VB3 --------------------------------------------------------------------------------
     以下這段程式可以讓您一次關閉 MDIForm 內的所有子表單,首先在 MDIForm 中建立一個 Menu,假設取名為 mnuCloseAll,則程式碼如下:Private Sub mnuCloseAll_Click()
        'Screen.MousePointer = vbHourglass
        Do While Not (Me.ActiveForm Is Nothing)
            Unload Me.ActiveForm
        Loop
        'Screen.MousePointer = vbDefault
    End Sub
      

  8.   

    不是太明白
    你说的关闭第一个form时要同时关闭其他由第一个form打开的form吗?那你的程序还要不要继续运行了呢?如果就是在关闭第一个form时退出程序就好办了,直接在第一个form的Unload事件里加上end就成了
    不知你是不是这个意思
      

  9.   

    晕,我的办法是最简单的啊,竟然没分在form1的unload事件里
    只要加一行end
    什么都解决了