在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...

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--;
}

本文标题为:在Vista或Windows7中C#进度栏未正确更新

基础教程推荐