Forms Visual Basic 6::卸载动态创建的表单

Forms Visual Basic 6::卸载动态创建的表单,forms,timer,vb6,sleep,Forms,Timer,Vb6,Sleep,我正在努力解决这个问题,但没有任何运气:( 这是我的密码: 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

我正在努力解决这个问题,但没有任何运气:(

这是我的密码:

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秒(3000),它将关闭表单并打开另一个表单

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

在模式模式下打开的窗口等待用户输入,因此

frm.Show vbModal
不会执行

您有两种解决方案:

a) 删除vbModal

b) 在myForm上添加计时器,并将间隔设置为1000(平均1秒),然后在计时器事件中添加此代码:

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

因为卸载我是错误的。

你真的是说
卸载我
,还是说
卸载frm
?你的设计是错误的。您不应该向用户显示消息,然后在几秒钟后将其删除,因为这只会让用户感到困惑,他们会认为出现了问题。改变设计,你的问题就会消失。