如何从另一个VB窗口关闭VB窗口

时间:2014-07-22 10:30:49

标签: vb6

我需要从另一个VB6表单中关闭一个VB6表单。我在form_unload中尝试了以下操作,但dint工作:

End
unload(form_name)
me.close  
set obj_formname = nothing  
unload(me)  

注意:我只需要关闭特定窗口但应用程序不应该关闭

如果我错过了什么,请帮帮我

2 个答案:

答案 0 :(得分:1)

当您对Form2执行操作或使用对它的引用时,将再次加载Form2

在您执行操作之前,您可以先检查是否已加载Form2,如果不是,您可能决定不执行操作

查看以下测试项目,该项目由2种形式组成:

Form1有3个命令按钮和以下代码:

Option Explicit

Private Sub Command1_Click()
  Form2.Show
End Sub

Private Sub Command2_Click()
  Unload Form2
End Sub

Private Sub Command3_Click()
  DoForm2
End Sub

Private Sub DoForm2()
  Dim frm As Form
  Dim blnLoaded As Boolean
  'check if Form2 is loaded
  blnLoaded = False
  For Each frm In Forms
    If frm.Name = "Form2" Then
      blnLoaded = True
    End If
  Next frm
  'perform action if Form2 is loaded
  If blnLoaded Then
    Form2.Caption = CStr(Now)
    'Print Form2.Name
  End If
End Sub

Form2没有控件和以下代码:

Option Explicit

Private Sub Form_Load()
  MsgBox "Form2 loaded"
End Sub

每当加载Form2时,都会显示一个消息框。

要测试,请执行以下操作:

  • 单击Command1:Form2将加载
  • 单击Command3:实际时间将显示在Form2的标题栏中
  • 单击Command2:Form2将卸载
  • 单击Command3:什么都不会发生,Form2无法加载

然后删除行" 如果blnLoaded那么"和相应的" 结束如果"并执行相同的测试......现在您将看到Form2将在最后一步加载

在Form2的标题栏上写一些东西你也可以通过读取Form2的名称来做同样的测试,删除行" Form2.Caption = CStr(Now)&# 34;并取消注释该行" Print Form2.Name " ..这将得到相同的结果

答案 1 :(得分:0)

尝试以下测试项目,该项目包含两种形式:

Form1上有2个命令按钮,代码如下:

Option Explicit

Private Sub Command1_Click()
  Form2.Show
End Sub

Private Sub Command2_Click()
  Form2.Hide
End Sub

Form2只是要显示和隐藏,它什么都不包含

单击Command1时,它将显示Form2,当您单击Command2时,它将隐藏Form2

您还可以将以下代码用于Command2

Private Sub Command2_Click()
  Unload Form2
End Sub

这两个例子都适合我。如果您的Form2仍然存在,那么可能会有一些引用它或在您尝试关闭它之后加载/显示它