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

Posted

技术标签:

【中文标题】Visual Basic 6 :: 卸载动态创建的表单【英文标题】:Visual Basic 6 :: Unload Dynamically Created Form 【发布时间】:2017-09-19 19:24:55 【问题描述】:

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

这是我的代码:

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 秒后自动关闭新创建的表单。

【问题讨论】:

你的意思是Unload Me,还是Unload frm 你的设计是不好的做法。您不应该向用户显示一条消息,然后在几秒钟后将其删除,因为它只会让用户感到困惑,他们会认为出现了问题。更改设计,您的问题就会消失。 【参考方案1】:

以模态模式打开的窗口等待用户输入,所以后面的语句

frm.Show vbModal

不会执行。

.

您有两种解决方案:

a) 移除 vbModal

b) 在 myForm 上添加 Timer 并将 Interval 设置为 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

因为卸载我是错误的。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于Visual Basic 6 :: 卸载动态创建的表单的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 Visual Basic 6 中导入 LibreOffice Writer 的监听器事件

如何在 Visual Basic 6.0 中创建带有文本框的数组

如何将 Visual Basic 6 组合框与 Microsoft Access 2007 表中的字段链接

Visual Basic 6 中的报告生成:生成报告时,我只在报告的记录中看到第一个学生的姓名

visual c++ 是啥软件

Visual.Basic.6大学教程pdf