我使用与下语句来实现显示一个窗体5秒种后自动关闭的功能:
If Right(SDate, 2) = TempDate And STime = TempTime Then (满足此条件后显示自己定义的窗体)
    With frm_BatchMessage
                        .Show
                        .SetFocus
                        .Label3 = "数据库备份,通讯将会中断!"  
                        Sleep (5000)
                        Unload frm_BatchMessage
    End With
end if
但是总是窗体只显示一个框架,5秒种后自动关闭了!如果我在sleep(5000)前增加一条语句Msgbox“通讯中断”,整个窗体就可以完整显示出来!所以很奇怪!请问大虾们是否知道是什么原因??谢谢!

解决方案 »

  1.   

    If Right(SDate, 2) = TempDate And STime = TempTime Then (满足此条件后显示自己定义的窗体)
        With frm_BatchMessage
                            .Show
                            .SetFocus
                            .Label3 = "数据库备份,通讯将会中断!" 
                             Doevents                 '****
                            Sleep (5000)
                            Unload frm_BatchMessage
        End With
    end if
      

  2.   

    Sleep是不能交换控制权和空闲给系统的。也就是说只有一瞬间显示了一个窗体的框架,等待5秒就开始了(此时就类似死机一样没有响应的),然后到了5秒就立刻关闭窗体。而你用一个msgbox一用,就在Sleep语句执行前停止了,那么你当然可以完整得看到一个窗体。显示窗体的时间和执行代码的时间,你可以想象一下,哪个更快??