2017-04-22 29 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 

因爲卸載我是錯誤的。