2010-07-12 61 views
1

我使用winforms MDI窗口並在其上顯示子窗口。 我需要使用模態對話模式(.ShowDialog())顯示其中的一些,但仍將它們顯示爲子窗口(它們應該保留在父窗口的邊界內)。MDI子窗口無法通過.ShowDialog()顯示爲什麼?

當我嘗試這樣做,我得到一個編譯時錯誤說,子窗口無法顯示一個模式對話框模式窗口。

有沒有辦法做到這一點?

回答

0

我不認爲有這樣做直接的方式。但是,在低層模式對話框通過禁用父窗口來實現。嘗試顯示無模式MDI子項並保持父項禁用,除非此子項關閉。

+0

謝謝。那我已經讀過msdn了。我希望我錯過了一些東西。 – Mariusz 2010-07-12 09:43:56

0

我通常會解決這個問題,通過將所有的childform的控件是用戶控制的部分,然後將用戶控件添加到childform,使一個單獨的對話框還包含用戶控件。這意味着你可以重用幾乎所有的代碼,並且通常有些代碼會不同(無論如何,子表單通常沒有OK/Cancel按鈕等)。

但是,如果你不希望走這路線這裏,理應有一種變通方法一CodeProject上的文章(我還沒有仔細端詳):MDI child as dialog form (MDI modal workaround)

+0

嗨, 謝謝,我過去禁用了其他窗口。當然,它的工作原理,但它會給你在屏幕上灰化控制的討厭效果。 – Mariusz 2010-07-12 09:58:49

0

如果你想模態窗口簡單地在父表單的範圍內打開,只需將表單屬性StartPosition設置爲CenterParent即可。

相關問題