执行一个循环,想让循环每执行一次,控件上显示的内容就更新一下。        private void button_Click(object sender, EventArgs e)
            int num = 0;
            for (int i = 0; i < **; i++)
            {
                //此处若干其他代码
                //……
                //                
                num += 1;
                label1.Text = num.ToString();
            }
        }这样的代码,在循环执行的过程中,窗体上的内容不改变,只有等循环执行完了,label1才显示num最后的值。
请教下如何才能让label1上的数值实时显示?

解决方案 »

  1.   

                    label1.Text = num.ToString(); 
    后面加上:
    Application.DoEvents();
      

  2.   

    这个因为你使用的单线程方式,现在主线程去执行
     for (int i = 0; i < **; i++) 
                { 
                    //此处若干其他代码 
                    //…… 
                    //                
                    num += 1; 
                    label1.Text = num.ToString(); 
                } 
    这个For循环了,所以没有去更新Label上的值
    你把button_Click中的内容放到一个新的函数里面,然后button_Click内启动一个线程,执行这个函数就可以了另外,Label要设置一个属性
    Label.CheckForIllegalCrossThreadCalls = false; //注意是Label,不是label1        private void se()
            {
                for (int i = 0; i < 100; i++)
                    label1.Text = i.ToString();
            }        private void button1_Click(object sender, EventArgs e)
            {
                System.Threading.Thread t = new System.Threading.Thread(se);
                t.Start();
            }
      

  3.   

    在timer控件的事件里写事件呗,上面的怎么没有这样说的啊?难道是我理解错了
      

  4.   

    加个timer控件,然后在timer控件的事件里赋值啊!而且可以设置时间间隔的,好像是Interval属性吧,Enable属性设置为True就可以了。
      

  5.   

    另外说一下,timer是不行的,在for执行的过程中,timer也更新不了窗体控件.Application.DoEvents();可以更新,但窗体依然是假死状态.
    委托?能说详细点么~