2009-01-28 45 views

回答

3

的區別在於哪一方擁有對話框。如果您明確設置了父級,那麼該窗口擁有該對話框。如果您沒有設置它(使用ShowDialog的無參數版本),那麼應用程序的當前活動窗口擁有該對話框。這是在MSDN,順便說一句。

這裏有用的是通過使用FormStartPosition.CenterParent枚舉設置StartPosition屬性來對齊對話框。

+0

我想你不得不爲當前活動窗口做一些欺騙手段,不要成爲「父母」......除非你從另一個表單動作觸發showdialog,這會很奇怪。 – dotjoe 2009-02-11 21:55:44

4

我不知道這是相關的,但我已經通過所屬形式的ShowDialog有一些問題,我通常這樣做:

f.Owner = Me 
f.ShowDialog() 
+0

我會看看它是否有所作爲。 – dotjoe 2009-01-29 14:29:01

0

它確實有差別......

我有一個MDI子調用的ShowDialog(我),在出現的對話框窗口,Me.Owner引用MDI容器,而不是MDI子。

使用Me.Owner.ActiveControl是一個解決辦法,但使用:

 Dim ContractForm As New Contract(strType, intMode) 
     ContractForm.Owner = Me 
     dgrAction = ContractForm.ShowDialog() 

獲取好聽。在出現的對話窗口中,Me.Owner現在引用MDI子代。

希望這會有所幫助!