2014-07-22 120 views
0

我需要从另一个VB6窗体关闭VB6窗体。我试着在form_unload但力的工作如下:如何从另一个VB窗口关闭VB窗口

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

注:我只需要在特定的窗口即可关闭,但应用程序不应该关闭

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

+1

你可以发布一些更多的代码?你如何创建和显示窗口。 – pushpraj

+0

“我”是目前的形式,所以这是肯定错误,因为你想关闭其他形式......我想问题是与()围绕form_name ..尝试它没有(),它可能会工作 – Hrqls

回答

0

请尝试以下测试项目,其中包含两种形式:

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

Option Explicit 

Private Sub Command1_Click() 
    Form2.Show 
End Sub 

Private Sub Command2_Click() 
    Form2.Hide 
End Sub 

窗体2只是要显示和隐藏,它不包含任何

当你Command上单击它会显示窗体2,当您单击Command它会隐藏窗体2

您也可以使用Command2的以下代码

Private Sub Command2_Click() 
    Unload Form2 
End Sub 

这两个示例都适用于我。如果你的窗体2仍然那么就可能有引用,或加载/显示它您试图关闭它

+0

是的, 你是对的。我相信Form2有一些价值和参考。 – Shalem

+0

我们可以试着杀死表单,因为我们知道表单名称?如果是的话,你可以建议一些代码? – Shalem

+0

您可以使用名称卸载它,或者您可以循环遍历所有表单并检查.name属性并卸载名称正确的表单...查看我的其他答案,了解通过所有表单循环的代码 – Hrqls

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 

窗体2没有控件和下面的代码:

Option Explicit 

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

当窗体2装载一个消息框会显示出来。

为了测试做到以下几点:

  • 单击Command:窗体2将载入
  • 点击,指令代码:实际时间将显示在窗体2的标题栏
  • 单击Command2:窗体2将卸载
  • 单击Command3:什么都不会发生,Form2将不会加载

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

而是在Form2的标题栏上书写某些东西,您也可以通过读取Form2的名称,通过删除行“Form2.Caption = CStr(现在)“并取消行”打印Form2.Name“..这将给出相同的结果