2010-09-21 17 views
1

我正在寫一個新的基於插件的應用程序。這會將程序集加載到他們自己的應用程序域中,並通過Application.Run(pluginForm)在每個應用程序域內顯示指定的主窗體。在調用應用程序域內的Application.Run(pluginForm)之前,我將加載器應用程序中的主窗體設置爲每個pluginForm的父窗體。因此,當pluginForm顯示它總是顯示在加載器應用程序的mainForm前面。子窗體失去了重點首先點擊父窗體。如何解決這個問題?

我的問題是,當用戶第一次點擊pluginForm(子表單)時,它失去了焦點,mainForm(加載器應用程序的形式)獲得焦點。 (然而,pluginForm停留在前面)因此,用戶最終不得不點擊兩次以使pluginForm第一次聚焦。

這很煩人。我怎樣才能解決這個問題?

+0

http://www.elearnenglishlanguage.com/difficulties/looselose.html – 2010-09-21 20:25:31

回答

2

您應該通過調用ShowDialog()在父母的UI線程上將子窗體顯示爲模態對話框。

+0

感謝。是的,我已經試過了。但是這會限制我在某個特定時間的單一形式。我需要多個這樣的表格才能起來。我也嘗試了除父UI線程之外的獨立線程中的pluginForm.Show()。這可以消除設置的焦點錯誤,但是我無法將pluginForm.Owner設置爲mainForm,因爲它位於單獨的線程中。任何其他想法? – Harindaka 2010-09-22 04:18:45

-1

當你調用子窗體使用

childForm.ShowDialog(parentForm); 

或等值

childForm.ShowDialog(this); 
+0

謝謝。事實是即時通訊從主UI線程以外的其他線程做到這一點。 :( – Harindaka 2010-09-22 06:13:40