我有一个只填充进度条的功能。
private void FillProgressBar(ProgressBar bar, Color c, int percent)
{
int steps = 10;
bar.set_Value(0);
for (int i = 0; i < percent / steps; i++)
{
System.Threading.Thread.Sleep(100);
bar.set_Value((i+1)*10) + bar.get_Value());
this.Refresh();
}
}
我从gui线程(不是多线程)召唤它,它的目的是慢慢填满吧。
但它似乎没有做到这一点,尽管价值确实提高了。
有关如何更新特定控件或整个表单的任何建议? PS:正如你所看到的,this.Refresh()也没有工作。
答案 0 :(得分:1)
答案 1 :(得分:1)
您当前的代码不会让主消息循环执行,因此它会阻止所有消息,包括WM_PAINT
个消息......
您不应该这样做,使用线程,使用计时器:不要阻止UI。
不要使用Application.DoEvents
这是不好的编程习惯,甚至不应该存在。