2013-09-16 32 views
0

我在VB6中面對一個奇怪的情況,也就是說,當我展示一個表單與另一個OwnerForm相關時,如果我做了這個例如兩三次,當我關閉所有的孩子窗體,突然之間,OwnerForm在背景上消失(失去焦點,以前的應用程序將在最前面),我將不得不在任務欄上單擊它以再次顯示窗體!VB6 Form.Show與OwnerForm

一個快速的樣品將是類似的東西:

Private Sub Command1_Click() 
    Command1.Enabled = False 
    Dim frm As New Form1 
    frm.Show 0, Form1 
End Sub 

對此有任何解決方案?

謝謝。

回答

0

您正在顯示非模態上的子窗體,也就是說,您可以打開任何數量的該窗體的子窗體。當你關閉它們時,有時產生它們的表單/應用程序將失去焦點並消失在其他應用程序的後面 - 就像你正在經歷的那樣。

您可能可以隱藏正在關閉的表單(使用_QueryUnload事件並取消卸載),隱藏,然後在父表單上設置ZOrder(將其放在前面),然後繼續卸載表單正在關閉。

讓我知道你如何繼續。

+0

嗨Cometbill, 感謝您的更新。是的,這是想法,這是顯示儘可能多的形式,因爲我需要非模態(我們在這裏談論大型應用程序)。而且我實際上(有時並非)在加載超過2個表單時面臨這個問題... 我使用_QueryUnload來隱藏表單而不是卸載它,但問題仍然存在(將ZOrder設置爲表單將會由於我不知道裝載了多少表單,所以我不會知道邏輯,所以我不知道什麼時候設置ZOrder)。第二件事,我認爲隱藏會導致內存問題,尤其是當有大量表單時 –

+0

只要在父表單上設置ZOrder,您只隱藏表單,但聽起來像父表單隱藏在後面其他應用程序,或者它隱藏在其他兒童表格之後(或者坐在其他兒童表格之上)。在這種情況下,您可能需要.ZOrder 0或ZOrder 1 - 我不記得哪個。 – cometbill

+0

當您關閉最後一個子窗體時,父窗體將隱藏在其他應用程序(例如Google Chrome)之後。謝謝 –