2017-04-22 60 views
1

我努力解决这个问题,没有任何运气:(的Visual Basic 6 ::卸载动态创建的窗体

这里是我的代码:

Option Explicit 

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
Private frm As Form 

Public Sub GenerateForm() 

    Set frm = New myForm 

    With frm 
     .Width = 4000 
     .Height = 3000 
     .Caption = "Message" 
    End With 

    frm.Move (Screen.Width - Me.Width)/2, (Screen.Height - Me.Height)/2 

    frm.Show vbModal 

    Sleep 3000 

    Unload Me 
    Set frm = Nothing 

End Sub 

Private Sub Command1_Click() 

    GenerateForm 

End Sub 

我要关闭新创建的窗体在3秒钟后自动。

+3

你真的是指'卸载我',或者你的意思是'卸载frm'? –

+0

你的设计是不好的做法。您不应该向用户显示消息,然后在几秒钟后将其删除,因为它只会让用户感到困惑,并且他们会认为出现了问题。改变设计,你的问题就会消失。 –

回答

0

您可以使用计时器这样,一旦达300秒(3000),它会关闭表单并打开另一个。

Private Sub Timer1_Timer() 
    If Timer1.Interval = 3000 Then 
     frm_Menu.Show 
     Unload frmSplash 
     Timer1.Enabled = False 
    End If 
End Sub 
2

的Windows模态模式,等待用户输入开,所以以后

frm.Show vbModal 

的语句将不会执行。

有两种解决方法:

一)删除vbModal

b)关于myForm的添加定时器和设置间隔为1000(平均1秒),接下来在Timer事件添加以下代码:

Private Sub Timer1_Timer() 
    Static sec As Integer 
    sec = sec + 1 
    If sec >= 3 Then 
     Timer1.Enabled = False 
     Unload Me 
    End If 
End Sub 

最后,你应该使用

Unload frm 

因为卸载我是错误的。