猿问

winform的一个怪问题

我定义了一个label和一个进度条pb

逻辑如下

  DataRow[] drs..

  int total = drs.length;

  for(int i = 0; i< drs.total; i++)

  {

    ........

    label.text = i.tostring() + "/" + total.tostring();

    pb.value = i * 100 / total

  }

 

问题来了,进度条是在变化着的,label不变,直到循环完成,才直接显示 22/22   10938/10938等

这个是什么原因呢,显示不同步。

一只名叫tom的猫
浏览 332回答 7
7回答

慕森王

要用后台线程去更新label的值的

繁星coding

应该是不是不变。是不是太快。你没有看清楚呢

慕标琳琳

感觉,要是不起线程,进度条也变不了哪去吧?起线程。子线程做数据,主线程更新UI。

海绵宝宝撒

有分不? 你用this.invoke。把你那些操作放到这个invoke里面就行了

小怪兽爱吃肉

你都循环语句是在后台线程中进行的,需要使用Invode或者BeginInvoke方法主动更新ui线程。

临摹微笑

给进度条加个事件,在事件里改变标签的值。 事件也相当一个线程。 或者用绑定也一样。

凤凰求蛊

Application.DoEvents();
随时随地看视频慕课网APP
我要回答