Form_Unload(Cancel as integer)..
Cancel=True就不会关掉了

解决方案 »

  1.   

    把判断过程放在Form_QueryUnload(cancel As Integer, unloadmode As Integer)事件中,
    如果不想退出cancel=true.可以用Select case语句判断unloadmode,确定是不是需要执行提示过程。QueryUnload 事件:
    在一个窗体或应用程序关闭之前发生。当一个 MDIForm 对象关闭时,QueryUnload 事件先在 MDI 窗体发生,然后在所有 MDI 子窗体中发生。如果没有窗体取消 QueryUnload 事件,该 Unload 事件首先发生在所有其它窗体中,然后再发生在 MDI 窗体中。当一个子窗体或一个 Form 对象关闭时,在那个窗体中的 QueryUnload 事件先于该窗体的 Unload 事件发生。cancel: 一个整数。将此参数设定为除 0 以外的任何值,可在所有已装载的窗体中停止 QueryUnload 事件,并阻止该窗体和应用程序的关闭。 unloadmode: 一个值或一个常数,如返回值中所描述的,它指示引起 QueryUnload 事件的原因。 unloadmode 参数返回下列值:常数 值 描述 
    vbFormControlMenu 0 用户从窗体上的“控件”菜单中选择“关闭”指令。 
    vbFormCode        1 Unload 语句被代码调用。 
    vbAppWindows      2 当前 Microsoft Windows 操作环境会话结束。 
    vbAppTaskManager  3 Microsoft Windows 任务管理器正在关闭应用程序。 
    vbFormMDIForm     4 MDI 子窗体正在关闭,因为 MDI 窗体正在关闭。 
    vbFormOwner       5 因为窗体的所有者正在关闭,所以窗体也在关闭。 此事件的典型用法是在关闭一个应用程序之前用来确保包含在该应用程序中的窗体中没有未完成的任务。例如,如果还未保存某一窗体中的新数据,则应用程序会提示保存该数据。当一个应用程序关闭时,可使用 QueryUnload 或 Unload 事件过程将 Cancel 属性设置为 True 来阻止关闭过程。但是,QueryUnload 事件是在任一个卸载之前在所有窗体中发生,而 Unload 是在每个窗体卸载时发生。
      

  2.   

    If ret = vbcancel Then
    cancel=1
     Exit Sub
    End If
      

  3.   

    将这段代码放在 QueryUnload 事件中
    按取消时设Cancel = 1