为了账号安全,请及时绑定邮箱和手机立即绑定

winform的一个怪问题

winform的一个怪问题

一只名叫tom的猫 2018-12-07 09:05:42
我定义了一个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等 这个是什么原因呢,显示不同步。
查看完整描述

7 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-01-21
?
繁星coding

TA贡献1797条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-01-21
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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

查看完整回答
反对 回复 2019-01-21
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

有分不?

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

查看完整回答
反对 回复 2019-01-21
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

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

查看完整回答
反对 回复 2019-01-21
?
临摹微笑

TA贡献1982条经验 获得超2个赞

给进度条加个事件,在事件里改变标签的值。

事件也相当一个线程。

或者用绑定也一样。

查看完整回答
反对 回复 2019-01-21
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

Application.DoEvents();

查看完整回答
反对 回复 2019-01-21
  • 7 回答
  • 0 关注
  • 331 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信