Unload 窗体名
不要用ME!

解决方案 »

  1.   

    我就不信 用 end 还搞不定
      

  2.   

    deactivate事件可以的啦我都是用这个来写我的关于窗体
    你试一试,unload 窗体名
      

  3.   

    Private Sub Form_Deactivate()
    Unload Form1
    End Sub
    真的不行啊!我切换窗口后根本就不会unload
      

  4.   

    unload方法是可以的。但是只有在程序内部才可以,焦点切换到系统上就不会发生unload事件.
      

  5.   

    Private Sub Form_LostFocus()
        Unload Me
    End Sub
      

  6.   

    如果想关闭窗体的同时退出程序,加上这个
    Private Sub Form_Unload(Cancel As Integer)
        End
    End Sub
      

  7.   

    对不起,好像Form_LostFocus()真的不行,Deactivate是可以的,试过了
        
    Private Sub Form_Deactivate()
        Unload Me
    End Sub
      

  8.   

    deactivate也不行(你试试单窗体的情况)。
    要想实现这个功能,需要调用系统API了。因为切换焦点到操作系统上,已经超出你程序的控制范围了。
      

  9.   

    Private Declare Function GetActiveWindow Lib "user32" () As Long
    Private Sub Timer1_Timer()
        If GetActiveWindow() <> hWnd Then End
    End Sub
    设置timer1时间间隔为几百毫秒,呵呵~~~,给分吧!这样我试过,可以!
      

  10.   

    呵呵,用TIMER当然可以了,我设的interval为10,但这样会增大系统开销。
    给出另一种方法:
    Module:
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongDeclare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongDeclare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Const GWL_WNDPROC = (-4)
    Public Const WM_ACTIVATE = &H6
    Public preWinProc As LongPublic Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIf Msg = WM_ACTIVATE Then
       If wParam = 0 Then Unload Form1
    End If
    wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
    End Function
    Form:
    Private Sub Form_Load()
    Dim ret As Long
    preWinProc = GetWindowLong(Form1.hwnd, GWL_WNDPROC)
    ret = SetWindowLong(Form1.hwnd, GWL_WNDPROC, AddressOf wndproc)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    Dim ret As Long
    ret = SetWindowLong(Form1.hwnd, GWL_WNDPROC, preWinProc)
    End Sub