public void ProgressBarValueA(string StrState, short nValue)//是用回调函数接收的数据,在这里处理的
{
nValue = nValue > (short)this.probA.Maximum ? (short)this.probA.Maximum : nValue;
this.probA.Value = nValue;
this.labState.Text = StrState;
}
测试环境1:win8 hp6300
现象:当nValue=100时,进度条无法充满
测试环境2:win7 hp pro3335
现象:当nValue=100时,进度条可以充满
测试环境2:win7 hp6300
现象:当nValue=100时,进度条无法充满
用的是同一个打包好的程序测试程序
------解决思路----------------------
检查一下probA.Maximum到底是多少
测试
this.probA.Value=100;
看到底显示成什么样子
------解决思路----------------------
学习一下下下
------解决思路----------------------
你试试这样:
你已知最大/最小值,那么设置好Step属性(默认是10),然后上面代码修改为:progressBar1.PerformStep();
看看问题是不是就解决了?
嘿嘿,我看到你提到了一个关键点://是用回调函数接收的数据,在这里处理的
说明你是用到了线程的意思?而回调这东西是不保证执行顺序了,另外,你的这个事件还是使用Value来修改进度条的进度,想想这逻辑就可能隐藏一个坑。
线程A 线程B
回调设置90
..... 回调设置100
..... 设置100
设置90
最终结果就是90
------解决思路----------------------
public void ProgressBarValueA(string StrState, short nValue)//是用回调函数接收的数据,在这里处理的
{
nValue = nValue > (short)this.probA.Maximum ? (short)this.probA.Maximum : nValue;
this.probA.Value = nValue;
this.labState.Text = nValue + " / " + this.probA.Maximum ;
}
改成这样试试看先,运行到最后是不是nValue跟Maximum是一样的,并且进度条没有充满。
如果是一样的,你看看是不是因为系统不同,导致窗体样式被改变,你的进度条的布局错了。
经测试,数据完整,当我用panel代替进度条控件时(将panel分成100份,用GDI+绘制),显示可以充满
这个问题曾经碰到过,不同系统下,样式显示的有差异
------解决思路----------------------
“当nValue=100时,进度条无法充满”
你确定nValue确实是100吗,你测试了吗?不要靠猜想.
如果你真的完全确定你自己代码什么问题都没有,就是进度条的问题,还来问什么,直接报告微软vs有个bug,不就得了
确定,进度值就显示在进度条上方
那么恭喜你,可以向微软报告一个bug,等着收钱吧
在form窗体上放一个button 一个 ProgressBar 外加一个timer
代码如下
int nProgressBarValue = 0;
private void timer1_Tick(object sender, EventArgs e)
{
nProgressBarValue++;
nProgressBarValue = nProgressBarValue > 100 ? 0 : nProgressBarValue;
this.progressBar1.Value = nProgressBarValue;
}
private void button1_Click(object sender, EventArgs e)
{
this.timer1.Enabled = true;
}
测试结果如题所述
我用这段代码,在我电脑上测试了,进度条是不满,最后有一段显示空白,大约10%左右。(Win 7 SP1 旗舰版 联想品牌机)
然后我又测试了一下,将timer1的时间段改成1000,就正常了。
我又测试了一下,将timer1的时间段改成10,空白大约会有近20%了。
看来和timer的时间段有关,猜测是时间段太短了,显示跟不上,进度条就显示不满。至于显示是满的,说不定是哪里设定的不一样(如系统高级选项中调整成最佳外观或最佳性能),或是显卡、显示器等原因。
我做了极端的测试,在最佳外观下,进度条显示不满,而调整成最佳性能,Win7就变成早期windows的那种丑效果,进度条显示就是满的了。