gpt4 book ai didi

windows-7 - Windows 7 Aero 主题进度条错误?

转载 作者:行者123 更新时间:2023-12-04 02:41:32 24 4
gpt4 key购买 nike

我遇到了我认为是 Windows 7 上的进度条错误。为了演示该错误,我创建了一个带有按钮和进度条的 WinForm 应用程序。在按钮的“点击”句柄中,我有以下代码。

private void buttonGo_Click(object sender, EventArgs e)
{
this.progressBar.Minimum = 0;
this.progressBar.Maximum = 100;

this.buttonGo.Text = "Busy";
this.buttonGo.Update();

for (int i = 0; i <= 100; ++i)
{
this.progressBar.Value = i;
this.Update();

System.Threading.Thread.Sleep(10);
}

this.buttonGo.Text = "Ready";
}

预期行为是进度条前进到 100%,然后按钮文本更改为“就绪”。但是,在 Windows 7 上开发此代码时,我注意到进度条会上升到大约 75%,然后按钮文本会更改为“就绪”。假设代码是同步的,这不应该发生!

在进一步的测试中,我发现在 Windows Server 2003 上运行的完全相同的代码产生了预期的结果。此外,在 Windows 7 上选择非航空主题会产生预期的结果。

在我看来,这似乎是一个错误。当长操作涉及复杂代码时,通常很难使进度条准确,但在我的特殊情况下,它非常简单,所以当我发现进度控件没有准确表示进度时,我几乎没有失望。

有没有其他人注意到这种行为?有没有人找到解决方法?

最佳答案

它与进度条的动画有关。如果您的进度条为 0% 并且您将其设置为 100%,那么它不会跳到那里,而是动画进度条平滑地填充。如果这太慢,您将在进度条完成动画之前完成。因此,即使您已经将其设置为 80%、90% 和 100%,动画仍然滞后。

我从来没有找到关闭它的方法,但是我有一个解决方法。仅当您增加进度条时才会完成动画。如果你向后移动它,它会立即跳到那个位置。因此,如果我希望进度条位于 x% (x != 100),那么我将其移至 x+1,然后移至 x。如果我想要 100%,我会将它移动到 100、99 和 100%。 (或者您使用的任何值,您都会明白。)这工作得足够快以至于不可见,您也可以将此代码保留在以前的 Windows 版本中(尽管我没有)。

关于windows-7 - Windows 7 Aero 主题进度条错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com