在循环的任何步骤中更改Label.Text

时间:2011-02-08 20:11:00

标签: c#

我希望在此代码中的任何步骤标签中显示该步骤的编号。 在我的代码中只显示标签中的最后一个数字!

我也是Label.Invalidate()完成了,但是不起作用。

    private void button1_Click(object sender, EventArgs e)
    {
        int i = 0;
        while (i<100)
        {
            i++;
            label1.Text = string.Format("Step is :{0}", i);
            System.Threading.Thread.Sleep(1000);
        } 
   }

2 个答案:

答案 0 :(得分:10)

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.update.aspx

设置文本后调用Update,它会对您有所帮助。但当然你应该考虑后台线程。

label1.Text = string.Format("Step is :{0}", i);
label1.Update();
System.Threading.Thread.Sleep(1000);

答案 1 :(得分:2)

由于您的循环正在UI线程上执行,因此UI线程被阻止,并且在循环完成之前无法更新文本。

您可以考虑使用BackgroundWorker组件,而patterns来完成循环工作。