日期:2014-05-18  浏览次数:20870 次

菜鸟提问winform循环界面会卡住
先举个例子

  private void button1_Click(object sender, EventArgs e)
  {
  for (int i = 0; i <= 20; i++)
  {
  Thread.Sleep(1000);
  label1.Text = i.ToString();
   
  }
  }



  这样写界面会卡住,根本看不到每次lable加1的效果,而且点了这个按钮后界面不能移动,也不能进行其他操作

  请问这个问题怎么解决啊

------解决方案--------------------
C# code

 private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(new ThreadStart(Test));
            th.Start();
         }
       
        public void Test()
        {
            for (int i = 0; i <= 20; i++)
            {
                for (int j = 0; j < 100; j++)
                {
                    ViewLable(i.ToString()+"-"+j.ToString());
                }
            }
        }
        public delegate void ViewLableDelegate(string str);//定义一个委托
        public void ViewLable(string str)
        {
            if (label1.InvokeRequired)
            {
                ViewLableDelegate wmd = new ViewLableDelegate(ViewLable);//应该是这样,楼上是我代码复制过来的,不好意思
                label1.Invoke(wmd, new string[] { str });
            }
            else
            {
                label1.Text = str;
            }
         }