在Vista或Windows7中C#进度栏未正确更新
作者:互联网
public partial class Form1 : Form
{
//....
private void timer1_Tick(object sender, EventArgs e)
{
if (this.progressBar1.Value >= 100)
{
this.timer1.Stop();
this.timer1.Enabled = false;
}
else
{
this.progressBar1.Value += 10;
this.label1.Text = Convert.ToString(this.progressBar1.Value);
}
}
//......
}
在这里,我使用了一个计时器来更新进度条的值.在XP中工作正常.但是在Windows7或Vista中,当进度值设置为100但图形进度不是100时!
搜索一些线程发现它的动画滞后于Vista / Windows7.
如何摆脱这件事?
我不想使用以下方法来释放Vista / Window7的外观:
SetWindowTheme(progressBar1.Handle, " ", " ");
解决方法:
我有同样的问题.佛子的小费帮了我大忙.除非最大值(100%),否则Samir的解决方案将可以正常工作.为了使这项工作也达到100%,必须先增加最大值.以下对我来说很好.
if (NewValue < progressBar.Maximum)
{
progressBar.Value = NewValue + 1;
progressBar.Value--;
}
else
{
progressBar.Maximum++;
progressBar.Value = progressBar.Maximum;
progressBar.Value--;
progressBar.Maximum--;
}
标签:progress-bar,c 来源: https://codeday.me/bug/20191106/2000532.html