1

この特定の状況では、さまざまな長さの時間がかかるプロセスに9つの自動化されたステップがあります。現在、プログレスバーの中央にパーセンテージを示す数値がありますが、最大33%のレース、長時間のレース、最大55%のレース、さらに長い時間の待機という一般的なストップアンドゴーの問題に悩まされています。 、その後終了します。

これをユーザーに提示するための最良の方法は何ですか?数字を削除し、プログレスバー全体を削除してajaxタイプの円のアニメーションを使用し、9つのステップの説明テキストを追加してチェックするか、そのままにしておく必要がありますか?あなたの考えは何ですか?

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# コードを示します。新しい が必要になりますUserControlProgressBarと呼ばれるコントロールを配置します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% のようになり、他のステップよりも時間がかかるステップもあります。

長いステップのうち 2 つを 2 つとしてカウントすることにしたので、11 ステップだったので、それほど明白ではなく、ジャンプは常に均等ではありませんでした: 9%、18%、36%、45%、54 %、72%、81%、90%、完了。ステップの値は常に同じでしたが、ステップのサイズが明らかではなかったので、うまくいきました..

于 2008-10-08T16:13:35.753 に答える