2015-11-03 84 views
0

美好的一天, 我有幾個方法,在我的表單代碼中花了很長時間。我想顯示一條消息(在另一個表單上使用label)以通知用戶正在發生的事情,因此他們不會假定程序沒有響應。從另一個表格更改標籤文本

我不想使用MessageBox.Show(),因爲我想有一個對象,可以在需要時更改文本,並在用戶無法關閉的情況下進行處置。

到目前爲止,我的財產以後這樣的:在我的主要形式有:

private void Foo() 
{ 
    Form2 infoPopup = new Form2(); 
    infoPopup.setText("running function1"); 
    infoPopup.Show(); 
    slowFunction1(); 
    infoPopup.setText("running function2"); 
    slowFunction2(); 
    infoPopup.Dispose(); 
} 

您可能已經猜到,形式2我有這樣的功能:

private void setText(string message) 
{ 
    this.label1.Text=message; 
} 

不幸的是這個解決方案只部分工作。我確實收到了form2彈出消息,但form2中的標籤內容不變。

感謝

+1

嘗試在更新文本的方法中調用'label1.Refresh();'。 – SplittyDev

+0

明確簡潔的答案。解決了這個問題。謝謝。 – ForeverStudent

回答

1

當你的應用程序正忙,重繪控制不是一個優先事項。因此,除非您的代碼在工作線程中運行,否則UI將不會更新可靠。

儘管你可以強制更新。控件和表單都有一個Update()方法。它強制對象重繪自己。

根據您的具體情況,您可能還想研究Invalidate()Refresh()方法。