c#进度条显示百分比

button1.Enabled=false;button2.Enabled=false;for(i=1;i<=100;i++){for(j=1;j<=10000;j++)... button1.Enabled = false;
button2.Enabled = false;

for(i=1;i<=100;i++)
{
for (j = 1; j<=10000; j++)
{
if (j % 100 == 0)
progressBar1.Value = j;
}
this.progressBar2.Value = i;
label3.Text = i.ToString() + "%";

}
button1.Enabled = true ;
button2.Enabled = true;
groupBox1.Text = "程序运行结束!";
timer1.Enabled=false;
我想在label3上显示进度百分比,但是只显示0%和100%,中间的数值显示不了,是什么原因,是因为没更新吗?
展开
 我来答
sololive
推荐于2017-10-09 · TA获得超过394个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:111万
展开全部
private volatile int currentNumber = 0;
private void Form1_Load(object sender, EventArgs e)
{
//Form加载的时候启动一个手工线程.
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(NumberIncrement));
thread.Start();
}
//递增数字.
private void NumberIncrement()
{
for (int i = 0; i < 100; i++)
{
currentNumber += i;
//注意,当前方法由手工线程执行,无法直接对UI线程下的控件赋值.我们启用一个委托,跳回UI线程.
EventHandler eh = new EventHandler(DisplayNumber);
this.Invoke(eh, new object[] { null, null });
//为了看到效果,这里可以加上
//Thread.Sleep(30);
}
}
private void DisplayNumber(object sender, EventArgs e)
{
//这里给UI控件赋值.
//比如 txtNumber.Text = currentNumber.ToString();
}
这是我给另外一个人写的代码,不过那人试都不原意试,你愿不愿意试下?
http://zhidao.baidu.com/question/79980016.html
来自寄畅园好心的冰洲石
2008-12-26 · TA获得超过199个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:123万
展开全部
不是因为没更新,而是程序的主线程也就是UI线程被你的循环卡住了
想要实现这个效果的话,应该把更新progressbar的操作放在一个工作线程里,用thread还是backgroundworker看你自己喜欢了
分不多,就不写代码了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友90b97c2
2013-03-12
知道答主
回答量:1
采纳率:0%
帮助的人:1524
展开全部
不支持次线程调用主线程中控件的属性和方法,需要使用委托解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6f75ac8fa
2008-12-26 · TA获得超过2513个赞
知道大有可为答主
回答量:1.3万
采纳率:0%
帮助的人:4020万
展开全部
这个一般都是模拟的不能真是反映出来的在WEB里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式