立即更新 toolStripStatusLabel

Updating toolStripStatusLabel immediately

我有一个 WinForms 程序,在 statusStrip 中有一个 button、一个 statusStrip 和一个 toolStripStatusLabel。如果我单击该按钮并运行:

private void button1_Click(object sender, EventArgs e)
{
    toolStripStatusLabel1.Text = "Test";

    System.Threading.Thread.Sleep(5000);
}

然后 toolStripStatusLabel 的文本直到线程完成休眠后才会更新。我如何让它立即更新,然后让线程休眠?

正如P. Kouvarakis所说,解决方案是这样的:

toolStripStatusLabel1.Text = "Test";
statusStrip1.Update();
toolStripStatusLabel1.Text = "Test";
Application.DoEvents();

最后一个 Application.DoEvents() 的解决方案是最好的。 Application.DoEvents() 必须附加到每个 StatusStrip 更改:

private void SetParseStatus(object sender, ParseStatusChangedEventArgs e)
{
    toolStripProgressBar1.Value = e.Percent;
    Application.DoEvents();
}

当状态条 Spring 设置为 true 时,我的状态标签更改没有在运行时显示。我将 Spring 设置为 false,它开始显示。

  1. 您需要像这样添加 StatusStrip 文本标签(作为子组件)(因为您无法使用父组件的文本进行操作):

  1. 当您双击状态条组件时,您将看到下一个

不要在此处添加文本更改代码,因为它只有在单击后才会刷新(如图所示 - statusStrip1_ItemClicked) 所以,任何 statusStrip1.Update(); this.Update();等帮不了你。

  1. 如何快速完成。您可以在目标条件开始的地方添加 if 就像这张照片