2013-10-11 61 views
0

我有一個模式窗口彈出窗口,所以我的應用程序的用戶可以編輯一些東西,然後保存它並關閉窗口。當他們關閉彈出窗口時,我的父(主)窗口被髮送到我桌面上所有其他應用程序的後面,然後它立即被髮回到前面。vb.net - showdialog()將主窗口發送到背景

任何想法爲什麼會發生這種情況?

+0

再次嗨!如果我沒有弄錯你用show()代替了showdialog()並且mainForm停止了返回;但是接下來你想知道爲什麼mainForm的繪畫事件發生了奇怪的現象(沒有提供任何代碼或指示)。你打算再次做同樣的事情,否則你只會關注你的問題(理解爲什麼showdialog()會將mainform返回)? – varocarbas

+0

請發佈您使用的代碼來顯示模式窗口 –

+0

我想我想通了。我被引導到了這個問題的結果,雖然我沒有在這個問題中找到答案,但卻讓我嘗試了其他似乎可行的事情。 – user2721815

回答

1

在您的主要形式有:

Dim frmDlg as New FormDialogToShow 
    frmDlg.ShowDialog(Me) 

主要形式不應該被髮送到後面。子對話框將顯示在父級之上。如果沒有所有者參考,mainform有時會被髮送到後面。當你不指定所有者的形式和出現這種情況:

Dim frmDlg as New FormDialogToShow 
    frmDlg.ShowDialog() 
    Me.BringToFront 

(答案是一樣的第一次)

+0

感謝Plutonix,但這對我不起作用。它上次也沒有工作;) – user2721815

+0

'frmDlg.ShowDialog(Me)'不能工作 – Plutonix

0

此代碼似乎要解決的問題:

' When closing the subform 
' ------------------------ 
sub_form.close() 
main.focus() 
sub_form.dispose() 

做當這個,即使當子窗體是模態窗口時,我的主窗體也不會被髮送到後面。

0

您的模態形式在ShowDialog行結束之前以某種方式隱藏自己嗎?這發生在我身上,並能夠通過從模態窗體中刪除Hide呼叫來解決此問題。

我想我在SO的某處讀過這種情況,因爲Windows沒有啓用的窗口將焦點發送到活動應用程序中,因此它將焦點發送到下一個應用程序。