2011-07-07 69 views
1

我有一個多線程應用程序與許多控件和窗體。我有一個事件regeistered,將調用窗體上顯示方法顯示。當事件第一次發生時,它執行Show方法,但沒有顯示錶單,但現在如果事件再次觸發(第2,第3,...),則會顯示錶單。窗體:焦點和顯示不能正常工作

我正在撥打一個簡單電話frm.Show()


第二個問題

在我的下應用同樣的事情發生卜,而不是顯示首次對焦不起作用。 我曾嘗試以下屬性:

this.WindowState = FormWindowState.Normal; 
this.Focus(); 
//this.BringToFront(); 
this.TopMost = true; 
+0

您調用窗體的Show()並且您沒有看到它已經很糟糕。可能是因爲你調用Show()而不是ShowDialog()它出現在你的主窗口後面,所以你只是看不到它? – Tigran

+0

可否請您發佈一些顯示Show方法調用的代碼片段?在哪個線程中調用此方法? – platon

+0

請更多代碼!它的種類很難給出任何意見,只是這些片段! – ioWint

回答

0

你是從不同的線程比創建該表格的一個調用展()?一般來說,Windows窗體控件不是線程安全的,行爲是不可預測的。如果必須的話,有幾種方法可以做到這一點。我建議您閱讀有關如何進行線程安全調用的此MSDN文章:How to: Make Thread-Safe Calls To Windows Forms Controls