0

我以前见过类似的问题,但似乎没有一个适合我的情况。我有一个windows窗体,窗体有后台worker,worker支持更新。我有一个状态条标签。

后台工作人员通过单击按钮启动,当单击按钮时,后台工作人员启动正常。每次迭代我都会更新进度,发送一个字符串作为用户状态。如果我使用该字符串来更新表单的标题,则标题会随着进程的运行而更改,并按预期工作......但是,如果我尝试使用该字符串来更新状态条标签的值,则标签没有得到更新。

我在一个单独的线程上进行工作,然后是 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 窗体文本正确更改,但状态标签没有。

更新@Richard Schneider 标签的类名称是 ToolStripStatusLabel 它似乎没有 Refresh() 成员。

更新 2 @Chibueze Opata 代码运行没有错误。如果我更新简单标签控件上的文本,则标题文本将会更改(这是我目前的工作)。问题是状态条上的 ToolStripStatusLabel 没有得到更新。

4

0 回答 0