背景: 私は、TooStripStatusLabel として使用される StatusStrip が設定された WindowForms v3.5 アプリケーションを持っています。実行中のタスク中にかなり多くの更新を発行していますが、空白になっている顕著な期間があります。ステータス ストリップ ラベルに空白を書き込んでいる場合もポイントはありません。
質問: ステータス ストリップ ラベルが空白であるとは思わない期間が表示されるのはなぜですか?
更新方法:
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();
}
これは役に立ちますか?