日期:2014-05-20  浏览次数:20803 次

text属性为什么不能及时刷新?
例如如下循环,希望label1象计时器一样跳动从1到199999,但运行的时候只能显示最后一个数字
private   void   button1_Click(object   sender,   System.EventArgs   e){
    for(int   i=0;i <20000;i++){
        label1.Text   =   Convert.ToString(i);
    }
}

------解决方案--------------------
因为计算机运行的速度太快了
哈哈 所以你才看到的是最后一个
------解决方案--------------------
加一个延时
delay(1000);//延时1秒

#region 延时(单位为毫秒) 因为2个时间点在毫秒级的差距永远小于1000,所以分开计算
public static void Delay(int delayTime)
{
DateTime now = DateTime.Now;
int s;//相差的秒数
int f;//相差的毫秒数
if (delayTime < 1000)// 延时在1秒以内
{
do
{
TimeSpan spand = DateTime.Now - now;
f = spand.Milliseconds;
Application.DoEvents();
}
while (f < delayTime);
}
else//延时超过1秒
{
do
{
TimeSpan spand = DateTime.Now - now;
s = spand.Seconds;
f = spand.Milliseconds;
Application.DoEvents();
}
while (s * 1000 + f < delayTime);
}
}
#endregion
------解决方案--------------------
private void button1_Click(object sender, System.EventArgs e){
for(int i=0;i <20000;i++){
label1.Text = Convert.ToString(i);
Thread.Sleep(1000);//延时一秒
}
}
------解决方案--------------------
请问怎么加?
------解决方案--------------------
for example:

private void button1_Click(object sender, EventArgs e)
{
this.timer1.Interval = 100;
this.timer1.Enabled = true;
}

private int i = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (i < 200)
{
this.label1.Text = i++.ToString();
}
}