使用Timer  
     int num = 0;
        System.Windows.Forms.Timer timer;
        public void SetNum()
        {
            timer = new System.Windows.Forms.Timer();
            timer.Interval = 1000;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }        void timer_Tick(object sender, EventArgs e)
        {
            label1.Text = num.ToString();
            label1.Invalidate();
            num++;
        }

解决方案 »

  1.   

    用委托,坛子里已经很多类似的例子了定义委托:        delegate void delegateShowText(string txt);        void showText(string txt)
            {
                if (this.InvokeRequired)
                {
                    Invoke(new delegateShowText(showText), new object[] { txt });
                }
                else
                {                this.textBox1.Text = txt;
                }        }这里加一句
    for(int i = 0; i <100;i++)
    {
     num++;
     showTxt(num + "");
     sleep(1000);
    }
      

  2.   

    Application.DoEvents
    获取属性值
      

  3.   


     public class Class1
        {
            public delegate void ChangeNumber(int num);
            public event ChangeNumber OnNumberChanged;        private int num;        public void Add()
            {
                for (int i = 0; i < 10; i++)
                {
                    num++;
                    Thread.Sleep(1000);
                    if (OnNumberChanged != null)
                    {
                        OnNumberChanged(num);
                    }
                }
            }
        }
     private void button2_Click(object sender, EventArgs e)
            {
                Class1 c = new Class1();
                c.OnNumberChanged += new Class1.ChangeNumber(c_OnNumberChanged);
                Thread th = new Thread(new ThreadStart(c.Add));
                th.IsBackground = true;
                th.Start();
            }        void c_OnNumberChanged(int num)
            {
                if (textBox1.InvokeRequired)
                {
                    textBox1.Invoke(new Class1.ChangeNumber(c_OnNumberChanged), new object[] { num}); 
                }
                else
                {
                    textBox1.Text = num.ToString();
                }
            }
      

  4.   

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                this.timer1.Enabled = true;
                this.timer1.Interval = 1000;
            }        int z = 0;        private void timer1_Tick(object sender, EventArgs e)
            {
                
                z ++;
                if (z == 101)
                {
                    this.timer1.Enabled = false;
                }
                else
                {
                    this.textBox1.Text = z.ToString();
                }
            }
        }
      

  5.   


            private void button1_Click(object sender, EventArgs e)
            {
                int num = 0;
                for (int i = 0; i < 100; i++)
                {
                    num++;
                    this.textBox1.Text = num.ToString();
                    System.Windows.Forms.Application.DoEvents();
                    System.Threading.Thread.Sleep(1000);
                }
            }
      

  6.   

    class里面这样写    public class Class1
        {
            public delegate void MyEventHandler(int e);
            public event MyEventHandler OnProChange;        Thread th;        public void Loop()
            {
                th = new Thread(new ThreadStart(M1));
                th.Start();
            }        void M1()
            {
                for (int i = 0; i < 100; i++)
                {
                    Thread.Sleep(1000);
                    if (OnProChange != null)
                    {
                        OnProChange(i);
                    }
                }
            }
        }
    Form上这样写        private void Form1_Load(object sender, EventArgs e)
            {
                Class1 cls = new Class1();
                cls.OnProChange += new Class1.MyEventHandler(cls_OnProChange);
                cls.Loop();
            }        void cls_OnProChange(int e)
            {
                CallBack(e);
            }        delegate void SetCallBack(int value);
            void CallBack(int value)
            {
                if (this.InvokeRequired)
                {
                    SetCallBack SCB = CallBack;
                    this.Invoke(SCB, new object[] { value });
                }
                else
                {
                    textBox2.Text = value.ToString();
                }
            }
      

  7.   

    for(int i = 0; i <100;i++)
    {
     num++;
     this.textbox1.text = num + "";
     application.Doevnt();//加上这句就哦了
     sleep(1000);//这句有没有都可以
    }这个循环拷贝到Form里面
      

  8.   

    多线程,不论何种方案,(Thread,Timer,delegate,BackgroundWorker...)主要涉及一个跨线程访问控件属性的问题,这个的解决方案是多样的,可以1,Control.Invoke(){}...
    2,
    delegate.BegineInvok()
    delegate.EndInvok()
    3,
    线程上下文封送
    4,
    利用BackgroundWork