toolStripProgressBar1.Maximum = macTable.Rows.Count;
            toolStripProgressBar1.Value =0;
                foreach (DataRow row in macTable.Rows)
                {
                              toolStripStatusLabel1.Text =row[1].ToString();
                               toolStripProgressBar1.Value++;
                }
怎么每次都不能即使显示toolStripStatusLabel1.Text呀,只有到foreach循环结束后才会显示toolStripStatusLabel1.Text!
这是什么回事呀??

解决方案 »

  1.   

    foreach太快了,显示不过来了,改用线程或异步委托吧
      

  2.   

    那我把toolStripStatusLabel1.Text="wancehngzhong";
    怎么也要等到foreach语句结束后才能显示出来呀!
      

  3.   

    后值覆盖前值,肉眼根本看不出来,设断点在foreach内,查看值就能清楚的明白
      

  4.   

    toolStripStatusLabel1.Text =row[1].ToString();
    //添加一行试试看
    toolStripStatusLabel1.Update();上面这个方法未必可行,而且即便有效果也不会太好,用下面的
    不过你要实现这个功能,最好用线程或异步委托,因为这么快for循环UI根本看不及显示即便显示了你也看不到,如果添加延迟的话,因为你的代码和UI在同一线程还是无法显示出来的。
    参考一下Control。InvokeRequired 和Control。Invoke()
      

  5.   

    如果不是foreach语句该如何显示?
      

  6.   

    使用多线程,然后在循环里每次Sleep下,太快眼睛也看不过来啊
      

  7.   

    你可以用backgrandwork  里面有个 process事件。是给界面的进度条用的。