2014-07-22 156 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「..這將給出相同的結果