立即更新 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,它开始显示。
- 您需要像这样添加 StatusStrip 文本标签(作为子组件)(因为您无法使用父组件的文本进行操作):
- 当您双击状态条组件时,您将看到下一个
不要在此处添加文本更改代码,因为它只有在单击后才会刷新(如图所示 - statusStrip1_ItemClicked)
所以,任何 statusStrip1.Update(); this.Update();等帮不了你。
- 如何快速完成。您可以在目标条件开始的地方添加
if
就像这张照片
我有一个 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,它开始显示。
- 您需要像这样添加 StatusStrip 文本标签(作为子组件)(因为您无法使用父组件的文本进行操作):
- 当您双击状态条组件时,您将看到下一个
不要在此处添加文本更改代码,因为它只有在单击后才会刷新(如图所示 - statusStrip1_ItemClicked) 所以,任何 statusStrip1.Update(); this.Update();等帮不了你。
- 如何快速完成。您可以在目标条件开始的地方添加
if
就像这张照片