0

以前にも同様の質問を見たことがありますが、私の状況に合うものはないようです。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 が更新されないことです。

4

0 に答える 0