2011-05-25 73 views
2

我寫了一個相對較大的應用程序,其中有很多對話框和窗體等。 我正在用Form.ShowDialog()打開它們。C#Windows無法打開頂部

很多時候,窗體在現有窗口後面打開,例如昨天我在一臺機器上測試了它,打開了其他幾個程序:許多Windows資源管理器窗口,幾個Excel窗口等等。我的許多窗體,打開/保存文件對話框等應該打開但沒有打開。我正在旋轉我的拇指,直到我按下Alt + Tab並意識到他們實際上是在另一個窗戶後面。

爲什麼會發生這種情況,以後如何停止?謝謝。

+0

顯示框時,父窗口是否有焦點? – Ryan 2011-05-25 23:59:14

+0

@minitech是的。它通常是一個按鈕點擊,菜單點擊等導致表單顯示。 – Ozzah 2011-05-26 00:08:27

回答

4

使用ShowDialog覆蓋,它將所有者窗口作爲參數。

通過作爲對話框的所有者傳入您的主窗口,您可以保證對話框始終在其前面彈出,並保持在它的前面。

而且如果他們使用其他應用程序,它不會惹惱用戶。

+1

這是執行此操作的唯一正確方法,也是此線程中唯一正確的答案。 – codekaizen 2011-05-26 00:38:59

+0

他的問題描述有點缺乏......他真的希望他的所有表格都是模態嗎?我懷疑它......但我可能是錯的。 – alexD 2011-05-26 00:44:32

+0

他們是兒童形式;操作系統窗口管理器的核心功能之一是管理子窗體,以便它們不會在父窗體後面彈出。他需要正確設置父窗口,並且這是默認情況下完成的方式。如果他不想要形式,那麼還有其他方法可以創建沒有它的子窗口,但保留父子關係。 – codekaizen 2011-05-26 00:46:11