在进度条中显示完成

时间:2008-10-08 15:46:40

标签: user-interface progress-bar

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

向用户展示此内容的最佳方式是什么?我们是否应该删除该数字,删除整个进度条以支持ajax类型的圆形动画,为九个步骤添加描述性文本并将其关闭或保留原样?你有什么想法?

6 个答案:

答案 0 :(得分:3)

如果确实需要很长时间,那么AJAX类型的动画可能不是一个好主意。我会选择项目清单。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

如果你的酒吧冻结一段时间有问题,最好用一般的动画来替换它,这会让用户放心发生的事情,而不用担心显示过程有多远。或者,保持进度条的位置,但添加一些额外的动画作为安慰剂。

答案 3 :(得分:1)

如果您有兴趣,这里有一篇关于用户对进度条感知的非常有趣的文章。让我想一想:

http://www.chrisharrison.net/projects/progressbars/

答案 4 :(得分: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;
    }
}

答案 5 :(得分:0)

我几乎遇到了同样的问题。我们还有9个步骤,因此条形图将分别为11%,22%33%等等,并且还会比其他步骤花费更长的时间。

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