背景:我有一个 WindowForms v3.5 应用程序,其 StatusStrip 设置用作 TooStripStatusLabel。在正在运行的任务期间,我对其进行了很多更新,但是在明显的时间段内它是空白的。当我在状态条标签上写一个空白时,也没有任何意义。
问题:任何想法为什么我会看到状态条标签为空白的时期,而我不希望它是?
我如何更新它:
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
PS。在 this.Update() 之后调用 Application.DoEvents() 似乎没有帮助。我实际上是通过 backgroundworker 控件调用它,所以:
(a) 我启动后台工作者:
private void Sync_Button_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
DisableUpdateButtons();
}
(b) 后台工作人员调用更新:
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();
}
这有帮助吗?