以前にも同様の質問を見たことがありますが、私の状況に合うものはないようです。Windows フォームがあり、フォームにはバックグラウンド ワーカーがあり、ワーカーは更新をサポートしています。ステータス ストリップ ラベルがあります。
ボタンをクリックすると、バックグラウンド ワーカーが開始されます。ボタンをクリックすると、バックグラウンド ワーカーが正常に開始されます。反復ごとに進行状況の更新を行い、ユーザー状態として文字列を送信します。その文字列を使用してフォームのタイトルを更新すると、プロセスが実行されるとタイトルが変更され、期待どおりに機能します...ただし、その文字列を使用してステータスストリップラベルの値を更新しようとすると、ラベル更新されません。
私は UI スレッドとは別のスレッドで作業を行っていますが、とにかく UI スレッドをブロックしていません。これは、期待どおりにタイトルの更新を見ることで明らかです。ただし、ステータス ストリップ ラベルは更新されません。
明らかに、ステータス ストリップ ラベルは System.Windows.Controls のサブクラスではありませんが、ステータス ストリップ ラベルを無効にしようとしました。また、ステータス ストリップ ラベルが配置されているステータス ストリップを無効にして更新しようとしましたが、できません。バックグラウンド作業中にテキストを変更するステータス ストリップ ラベルを取得します。
Progress Changed イベントのコードは次のとおりです。
void workerThread_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//_statusCurrentActivityLBL.Text = e.UserState.ToString();
String s = e.UserState.ToString();
Text = s;
_statusCurrentActivityLBL.Text = s;
_statusCurrentActivityLBL.Invalidate();
statusStrip1.Invalidate();
statusStrip1.Refresh();
}
私が言ったように、Windows フォームのテキストは正しく変更されますが、ステータス ラベルは変更されません。
UPDATE @Richard Schneider ラベルのクラス名は ToolStripStatusLabel です Refresh() メンバーがないようです。
UPDATE 2 @Chibueze Opata コードはエラーなしで実行されます。シンプルなラベル コントロールのテキストを更新すると、タイトル テキストが変更され、ラベルが更新されます (これが現在の回避策です)。問題は、ステータス ストリップの ToolStripStatusLabel が更新されないことです。