立即更新toolStripStatusLabel

时间:2017-04-17 21:52:19

标签: c# multithreading statusstrip toolstripstatuslabel

我有一个WinForms程序,其button中有statusStriptoolStripStatusLabelstatusStrip。如果我单击按钮,则运行:

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

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

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

5 个答案:

答案 0 :(得分:1)

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

toolStripStatusLabel1.Text = "Test";
statusStrip1.Update();
System.Threading.Thread.Sleep(5000);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  1. 您需要添加 StatusStrip 文本标签(作为子组件)(因为您无法使用父组件的文本进行操作),如下所示:

child component

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

2ble click pic

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

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

example "if"

答案 3 :(得分:-1)

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

答案 4 :(得分:-1)

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

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