1

在这种特殊情况下,一个过程中有 9 个自动化步骤需要不同的时间长度。我们目前在进度条的中心有一个显示百分比的数字,但它遇到了常见的走走停停问题,最高可达 33%,等待很长时间,最高可达 55%,等待更长时间,然后整理。

向用户展示此内容的最佳方式是什么?我们应该删除数字,删除整个进度条以支持 ajax 类型的圆形动画,为九个步骤添加描述性文本并检查它们还是保持原样?你怎么认为?

4

5 回答 5

3

如果真的需要很长时间,AJAX 类型的动画可能不是一个好主意。我会选择物品清单。

于 2008-10-08T15:48:29.033 回答
2

进度条用于向用户保证正在发生的事情。如果您没有更详细的步骤列表,我建议您“伪造”它们。

一个基本的解决方案是运行一个计时器并缓慢增加进度,将其限制在下一个逻辑步长值。如果这些步骤花费的时间差异很大,您可以手动调整每个计时器“滴答”的增量值,具体取决于您所处的步骤。

然而,一个更好的解决方案(我曾经以这种方式实现过,但我无法发布代码:)),将是随着步骤的继续缓慢减少增量 - 所以它永远不会完全进入下一步。然后下一步到了,你有一个很好的跳跃,循环重复。

于 2008-10-08T15:58:40.060 回答
1

在某些情况下,进度条指示正在发生的事情比准确和流畅更重要。当进度条停止前进时,用户往往会感到恐慌。

如果您在一段时间内遇到栏冻结的问题,最好用通用动画替换它,以向用户保证正在发生的事情,而不必担心显示过程有多远。或者,保留进度条,但添加一些额外的动画作为安慰剂。

于 2008-10-08T16:05:30.233 回答
1

为了扩展 Cadet Pirx 的答案,这里有一些 WinForms C# 代码。你需要一个新的UserControl. 在其上放置一个ProgressBar控件,称为inner. 添加以下代码:

public partial class ZenoProgressBar : UserControl
{
    private const int DEFAULT_FACTOR_VALUE = 10;
    private const int DEFAULT_MAXIMUM_VALUE = 100;

    public ZenoProgressBar()
    {
        InitializeComponent();

        Maximum = DEFAULT_MAXIMUM_VALUE;
        Factor = DEFAULT_FACTOR_VALUE;
    }

    /// <summary>
    /// The "speed" of the progress bar. While it will never get to
    /// the end, it uses this number to decide how much further to
    /// go each time Increment is called. For example, setting it to
    /// 2 causes half of the remaining distance to be covered.
    /// </summary>
    [DefaultValue(DEFAULT_FACTOR_VALUE)]
    public int Factor { get; set; }

    [DefaultValue(DEFAULT_MAXIMUM_VALUE)]
    public int Maximum { get; set; }

    private void ZenoProgressBar_Load(object sender, EventArgs e)
    {
        inner.Dock = DockStyle.Fill;
    }

    public void Increment()
    {
        inner.Value += (inner.Maximum - inner.Value) / Factor;
    }
}
于 2009-01-04T09:28:38.530 回答
0

我遇到了几乎完全相同的问题。我们也有 9 个步骤,所以条形图会走 11%、22% 和 33% 等,而且有些步长比其他步长。

我决定将两个较长的步骤算作两个,所以我们有 11 个步骤,所以它不那么明显,而且跳跃并不总是均匀的:9%、18%、36%、45%、54 %、72%、81%、90%,完成。步长值始终相同,但由于步长的大小不明显,所以它起作用了..

于 2008-10-08T16:13:35.753 回答