在“Form_Unload”事件中不写代码试试!

解决方案 »

  1.   

    1、同意 zyl910(910:分儿,我来了!) 
    Private Sub Form_Unload(Cancel As Integer) 
    'End 
    End Sub 
    2、请在编译的时候选 P- 代码
      

  2.   

    在Unload Me 之前
    set CoolBar=nothing
    试试
      

  3.   

    在Form_Unload不写代码(如下)
    Private Sub Form_Unload(Cancel As Integer) 
    'End 
    End Sub 
    果然有效,谢了,可是我要在退出时判断一些事件,比如退出前判断改变得设置保存了没有,那么在Form_Unload里不可能不写代码丫?怎么办?而且我的程序不止一个窗体,在Form_Unload里加end才可以保证程序全部退出阿。
    另外在Form_Unload里的End前加了set CoolBar=nothing都没有用阿。
      

  4.   

    现在我的程序改为了:
    Private Sub Form_Unload(Cancel As Integer)
    If saveset.Enabled = True Then
       answer = MsgBox("背景设置还未保存,保存吗?(是-保存,否-不存,取消-恢复默认设置)", vbYesNoCancel + vbInformation, "提示")
       If answer = vbYes Then
          saveset_Click
       Else
          If answer = vbCancel Then
             bgimgpath = "own"
             fontcolorname = "own"
             saveset_Click
          End If
       End If
    End If
    If MsgBox("你确定要退出吗?", vbYesNo + vbInformation, "提示") = vbYes Then
       Cancel = 0
       End----------------------!!!!!罪魁祸首!!
    Else
       Cancel = 1
    End If
    End Sub
    ---------------
    我发现不用end就不会有事!!!!可是,不用end的话,我的程序有时候会无法退出,就是任务管理器中还会有它在运行。怎么办?有没有可以退出所有窗体的语句??
      

  5.   


    end虽然可以强行退出程序,可是还是必须找到根本原因来解决,
    有可能你的其他窗体还驻留在内存,有一个初学者常犯的错误是导致这种情况的最常见原因:
    假如是按command1退出,一般我们这样写:private sub command1_click()
        unload me
    end sub但是,假如unload me后面还有代码会怎样呢?你可以试一下private sub command1_click()
        unload me
        msgbox "test"
    end sub你会发现unload me以后代码还在继续往下执行,直到进程结束(end sub)再看下面的代码:
    private sub command1_click()
        unload me
        command1.visible = true
    end sub你把它放在一个新的工程里试一下,可以发现点了按钮后,窗体并未退出内存,虽然不可见,这是什么原因呢?
    原来,执行unload me时,确实退出了窗体,但接下来的语句又调用了窗体上的控件,引起窗体重新加载.有时候我们编写的程序,有时退出非常的慢,莫名其妙地退不干净,或者退出后还占用一些资源,甚至还会有一些莫名其妙的错误,其实很多都是这些简单的错误,不经意的造成的.所以,正确的方法:
        unload me
        exit sub我们平时编程的时候要养成这样的习惯,随时在unload me后面加exit sub当我们的程序莫名其妙地退不出时,简单的加一个end并不是好的习惯,
    你可以这样调试:
    暂停程序执行,在立即窗口输入
    ?forms(0).name
    就能看到哪个form还在内存里,然后就检查一下这个form的代码,看看是否有问题
      

  6.   

    不调试看看,不好说。编译时请加入调试信息,出错时选"否"载入实时
    调试器,看看调用堆栈,先把问题最后出在哪儿找到。
        我估计出现这个问题,还是因为有潜在的循环引用,用的时候没问题,
    退出的时候问题就来了。
        要不把你的程序给我看看,记住编译时一定要带调试信息。
        我的Mail: [email protected]
      

  7.   

    用form对象,将所有的窗体一一结束,再end就行了,我以前就遇到过同样的问题。
    Dim i As LongFor i = Forms.Count - 1 To 0 Step -1
    Unload Forms(i) ' Triggers QueryUnload and Form_Unload
    Next iIf Forms.Count = 0 Then Close
    end
      

  8.   

    ◇把所有对象都Set .. = Nothing
    ◇把所有窗体都卸载Unload 窗体
    ◇在Form_Unload事件中Set frmMain = Nothing (frmMain为主窗体)
    ◇有些时候End会出问题(如使用了SubClass或者Hook,会导致程序崩溃和系统错误)
      

  9.   

    在Form_Unload事件中UNLOAD所有其他的FORM.
      

  10.   


    dim a as formsfor each a in forms
      unload a
    if a=nothing then
       exit for
     end
    next
      

  11.   

    声明错误!
     dim a as form