2012-07-10 47 views
1

在我的Windows窗體應用程序,我關閉一個表格並打開另一個像這樣:的WinForms:如何在第一類的標籤文本當打開第二

MyApp.MySecondForm frmInst = new MyApp.MySecondForm(); 
frmInst.Show(); 
this.Hide(); 

但在此之前我開這樣的,我設置標籤我的第一種形式的文本,因爲我想通知用戶第二種形式正在加載。

想象一下,第二個窗體的加載需要10秒鐘,當我按下按鈕打開第二個按鈕時,標籤文本不會被更改,直到第二個窗體打開。當我關閉第二種形式時,我記得第一種形式,並看到文本已經改變。

在用戶單擊按鈕後,我應該遵循哪種方式設置標籤文本?

在此先感謝。

+0

您應該在後臺線程中執行該加載。 – SLaks 2012-07-10 13:34:37

+0

在第一或第二個表單上?第一種形式,它導致了一個錯誤。 – kubilay 2012-07-10 13:37:55

+4

你有沒有在顯示第二個表單之前嘗試調用Refresh()?就在frmInst.Show()之前() – 2012-07-10 13:38:14

回答

1

你必須frmInst.Show()前致電Refresh()方法。因爲在方法完成執行之前圖形不會刷新,除非手動執行。

1

你是否異步激發了10秒的過程?

如果不是,那是什麼導致了延遲。它獲取信息(10秒),然後更新GUI線程。

嘗試使用一個BackgroundWorker: http://www.dotnetperls.com/backgroundworker

+0

謝謝,它將來自web函數的數據綁定到form_Load事件上的網格。我沒有看BW。我應該在第一種形式上使用它,對吧? – kubilay 2012-07-10 13:39:05

+0

如果網格是第一種形式,那麼是的,從第一種形式開始。 – 2012-07-10 13:42:10

+0

網格處於第二種形式。我現在用Refresh()來解決,但我會看看BW,當我嘗試做更多時,它似乎很有用。謝謝。 – kubilay 2012-07-10 13:47:02

相關問題