我有一個需要顯示對話框的MDIChild窗體。目前,我正在做這樣的將MDIChild表單內...如何從MDIChild窗體內正確顯示Dialog()?
f.ShowDialog(Me)
我應該使用f.ShowDialog(mdiparent)
?
在致電ShowDialog()
之前設置店主有什麼不同?
我有一個需要顯示對話框的MDIChild窗體。目前,我正在做這樣的將MDIChild表單內...如何從MDIChild窗體內正確顯示Dialog()?
f.ShowDialog(Me)
我應該使用f.ShowDialog(mdiparent)
?
在致電ShowDialog()
之前設置店主有什麼不同?
的區別在於哪一方擁有對話框。如果您明確設置了父級,那麼該窗口擁有該對話框。如果您沒有設置它(使用ShowDialog的無參數版本),那麼應用程序的當前活動窗口擁有該對話框。這是在MSDN,順便說一句。
這裏有用的是通過使用FormStartPosition.CenterParent枚舉設置StartPosition屬性來對齊對話框。
我不知道這是相關的,但我已經通過所屬形式的ShowDialog有一些問題,我通常這樣做:
f.Owner = Me
f.ShowDialog()
我會看看它是否有所作爲。 – dotjoe 2009-01-29 14:29:01
它確實有差別......
我有一個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子代。
希望這會有所幫助!
我想你不得不爲當前活動窗口做一些欺騙手段,不要成爲「父母」......除非你從另一個表單動作觸發showdialog,這會很奇怪。 – dotjoe 2009-02-11 21:55:44