背景:我有一个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