我有一個模式窗口彈出窗口,所以我的應用程序的用戶可以編輯一些東西,然後保存它並關閉窗口。當他們關閉彈出窗口時,我的父(主)窗口被髮送到我桌面上所有其他應用程序的後面,然後它立即被髮回到前面。vb.net - showdialog()將主窗口發送到背景
任何想法爲什麼會發生這種情況?
我有一個模式窗口彈出窗口,所以我的應用程序的用戶可以編輯一些東西,然後保存它並關閉窗口。當他們關閉彈出窗口時,我的父(主)窗口被髮送到我桌面上所有其他應用程序的後面,然後它立即被髮回到前面。vb.net - showdialog()將主窗口發送到背景
任何想法爲什麼會發生這種情況?
在您的主要形式有:
Dim frmDlg as New FormDialogToShow
frmDlg.ShowDialog(Me)
主要形式不應該被髮送到後面。子對話框將顯示在父級之上。如果沒有所有者參考,mainform有時會被髮送到後面。當你不指定所有者的形式和出現這種情況:
Dim frmDlg as New FormDialogToShow
frmDlg.ShowDialog()
Me.BringToFront
(答案是一樣的第一次)
感謝Plutonix,但這對我不起作用。它上次也沒有工作;) – user2721815
'frmDlg.ShowDialog(Me)'不能工作 – Plutonix
此代碼似乎要解決的問題:
' When closing the subform
' ------------------------
sub_form.close()
main.focus()
sub_form.dispose()
做當這個,即使當子窗體是模態窗口時,我的主窗體也不會被髮送到後面。
您的模態形式在ShowDialog
行結束之前以某種方式隱藏自己嗎?這發生在我身上,並能夠通過從模態窗體中刪除Hide
呼叫來解決此問題。
我想我在SO的某處讀過這種情況,因爲Windows沒有啓用的窗口將焦點發送到活動應用程序中,因此它將焦點發送到下一個應用程序。
再次嗨!如果我沒有弄錯你用show()代替了showdialog()並且mainForm停止了返回;但是接下來你想知道爲什麼mainForm的繪畫事件發生了奇怪的現象(沒有提供任何代碼或指示)。你打算再次做同樣的事情,否則你只會關注你的問題(理解爲什麼showdialog()會將mainform返回)? – varocarbas
請發佈您使用的代碼來顯示模式窗口 –
我想我想通了。我被引導到了這個問題的結果,雖然我沒有在這個問題中找到答案,但卻讓我嘗試了其他似乎可行的事情。 – user2721815