背景:我有一個WindowForms v3.5應用程序,設置了一個StatusStrip作爲TooStripStatusLabel。在正在運行的任務期間,我會對其進行相當多的更新,但是有一段時間它是空白的。當我爲狀態條標籤寫入空白時,沒有任何問題。Winforms StatusStrip - 當我更新它時,爲什麼會出現空白?
問題:任何想法爲什麼我會看到期間狀態欄標籤是空白的,當我不指望它是?
我如何更新:
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
PS。在this.Update()之後調用Application.DoEvents()似乎沒有幫助。我其實通過BackgroundWorker的控制調用這個,所以:
(一)我啓動的背景工人:
private void Sync_Button_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
DisableUpdateButtons();
}
(二)背景工人呼籲更新:
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
backgroundWorker1.ReportProgress(1, "Example string");
MainForm.MyC.SyncFiles(sender);
}
( c)MyC業務類也使用它,例如
public void SyncFiles(object sender)
{
BackgroundWorker bgw = (System.ComponentModel.BackgroundWorker) sender;
bgw.ReportProgress(1, "Starting sync...");
.
.
.
}
(d)本次活動將它拾起:
private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
UpdateStatusStrip((string)e.UserState);
}
(E)和再次更新狀態條
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
這是否幫助?
我有類似的東西。當標籤的文字太長時,標籤顯示爲空白。還不確定是否有解決方法。 – 2012-03-06 13:17:05