在VB中,我想在单击窗体最右上角的关闭按钮后不直接关闭窗体而是先询问是否要关闭后再关闭,请问怎样捕捉这个事件?谢谢各位了.

解决方案 »

  1.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If MsgBox("unload me?", vbYesNo) = vbNo Then
            Cancel = True
        End If
    End Sub
      

  2.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If UnloadMode = vbFormControlMenu Then
            Cancel = MsgBox("是否确认关闭窗体?", vbYesNo) = vbNo
        End IfEnd SubORPrivate Sub Form_Unload(Cancel As Integer)
        If MsgBox("是否确认关闭窗体?", vbYesNo) = vbNo Then
            Cancel = 1
        End If
    End Sub
      

  3.   

    Private Sub Form_Unload(Cancel As Integer)
        If MsgBox("是否确认关闭窗体?", vbYesNo) = vbNo Then
            Cancel = 1
        End If
    End Sub
      

  4.   

    先谢谢以上各位了,不过我还有一个疑问:为什么当MsgBox(....)=vbNo时,Cancel=True或Cancel=1都可以,疑问在于在VB中当把True这个布尔常量赋给整型变量时True等价于-1,那在本问题中意味着Cancel=1和Cancel=-1都可以,这是为什么?
      

  5.   

    当转换其他的数值类型为 Boolean 值时,0 会转成 False,而其他的值则变成 True。
    当转换 Boolean 值为其他的数据类型时,False 成为 0,而 True 成为 -1
      

  6.   

    vbman2003,我知道这点,这不就正是为什么Cancel=1和Cancel=-1都可以的疑点所在吗?
      

  7.   

    我查了MSDN,在QueryUnLoad事件中,只要Cancel<>0就会阻止窗体的关闭。