比如我做一个for循环语句如下
for(int i=0;i<10000;i++)
{
    this.label1.Text=i.toString();}为什么只显示最后一个值9999,中间过程的值都没有动态的显示出来。我想使中间的数字动态的显示出来怎么办?

解决方案 »

  1.   

    for(int i=0;i<10000;i++)
    {
      this.label1.Text=i.toString();
    System.Threading.Thread.Sleep(1000);  // 延时1秒
    }
      

  2.   

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Interval = 500;
        timer1.Start();
    }
    int i = 0;
    private void timer1_Tick(object sender, EventArgs e)
    {
        if (i >= 100)
        {
            timer1.Stop();
        }
        else
        {
            i++;
            this.label1.Text = i.ToString();
        }
    }
      

  3.   

    for(int i=0;i<10000;i++)
    {
      this.label1.Text=i.ToString();
    this.Refresh();
    }
      

  4.   


            lable1只能接收一个值   没有对其他进行设置  当然只会显示最后一次赋的值啦.
      

  5.   


    不间断赋值,瞬间执行完,因此感觉只有最后一个值。动态赋值不能太快,可以加定时器(Thread.Sleep有死机的假象),间隔0.5秒动态赋值,这样就有动态效果。
      

  6.   

    其实是变了,只不过太快了,人根本没发分辨
    System.Threading.Thread.Sleep(1000); 
      

  7.   

    建议用JavaScript写吧,setTimeout
      

  8.   

    System.Threading.Thread.Sleep(1000); // 延时1秒
      

  9.   

    for(int i=0;i<10000;i++)
    {
      this.label1.Text=i.toString();
      this.label1.Refreash();
      Applicatin.DoEvents();
    }
      

  10.   

    记得很清楚有人问过,好像label或是textbox的,循环看不到变化只看见最后值,好像是要窗体重绘或刷新才可以
      

  11.   

       for (int i = 0; i < 10000; i++)
                {
                    this.label1.Text = i.ToString();                Application.DoEvents();
                }
      

  12.   

    我也遇到这个问题,13楼的
    Application.DoEvents();
    这句是解决问题的关键!!!