2008-10-08 74 views
1

在這種特定情況下,在一個過程中有9個自動步驟需要不同的時間長度。我們目前有一個數字顯示進度條中心的百分比,但它遇到了常見的停止和跳躍問題,比賽高達33%,等待很長時間,高達55%,等待更長的時間,然後完成。在進度條中顯示完成

向用戶展示這種最佳方式是什麼?我們是否應該刪除數字,刪除整個進度條以支持ajax類型的圓形動畫,爲九個步驟添加描述性文本並檢查它們,或者保持原樣?你怎麼看?

回答

3

如果確實需要很長時間,AJAX類型的動畫可能不是一個好主意。我會去清單的項目。

+0

我同意,如果您沒有多少步驟,請向用戶顯示您正在執行的步驟。不要給他們一個錯誤的想法,即很多事情都是在引擎蓋下進行的,當他們不會的時候,他們會得到很多反饋。 – Miles 2008-10-08 16:17:14

2

進度條用於讓用戶確信發生了某些事情。當你沒有更詳細的步驟列表時,我會推薦'僞裝'它們。

一個基本的解決方案是運行一個計時器並緩慢增加進度,並在下一個邏輯步長值上限。如果這些步驟需要大量不同的時間,則可以根據每個計時器的「打勾」手動調整增量值,具體取決於您所處的步驟。

但是,更好的解決方案(我曾經以這種方式實現過,但我不能發佈代碼:)),將會繼續逐步減少增量 - 所以它不會讓它進入下一步。然後下一步到達,你有一個不錯的跳躍和循環重複。

1

在某些情況下,進度條指示發生的事情比準確平滑更重要。當進度條停止進度時,用戶往往會恐慌。

如果您在一段時間內出現了條形碼凍結問題,最好用一個通用動畫替換它,以便讓用戶確信發生了某些事情,而不用擔心顯示流程有多遠。或者,留下進度條,但添加一些額外的動畫作爲安慰劑。

0

我幾乎完全相同的問題。我們也有9個步驟,所以酒吧會去11%,22%33%等,也有一些步驟比其他步驟更長。

我決定讓兩個較長的步數算作兩個,所以我們如何有11個步驟,所以它不是那麼明顯,跳躍也不總是均勻:9%,18%,36% 45%,54%,72%,81%,90%。步驟值總是相同的,但由於步驟的大小並不明顯,它的工作原理。

1

擴大軍校零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; 
    } 
}