我正在使用C#和Windows窗體。我有一個正常的進度條在程序中正常工作,但現在我有另一個操作,其持續時間不易計算。我想顯示一個進度條,但不知道啓動/停止滾動字幕的最佳方式。我希望能夠像設置選取框的速度一樣簡單,然後有一個start()和stop(),但它看起來並不那麼簡單。我必須在後臺運行一個空循環嗎?我該如何做到最好?謝謝Windows窗體ProgressBar:啓動/停止選取框的最簡單方法?
回答
使用樣式設置爲Marquee
的進度條。這代表了一個不確定的進度條。
myProgressBar.Style = ProgressBarStyle.Marquee;
您還可以使用MarqueeAnimationSpeed
屬性來設置它需要多長時間顏色的小方塊在你的進度條動畫。
如果'視覺樣式'未啓用,'Marquee'將不會渲染。啓用`Application.EnableVisualStyles();` – Pooven 2013-05-15 09:49:02
你可以使用Timer(System.Windows.Forms.Timer)。
掛鉤它的Tick事件,提前然後進度條,直到達到最大值。當它達到(達到最大值)並且您沒有完成作業時,將進度欄值重新設置爲最小值。
...就像Windows資源管理器:-)
這違反了「不要重新啓動進度」。和糟糕的UI/UX。請參閱:http://msdn.microsoft.com/en-us/library/windows/desktop/dn742475%28v=vs.85%29.aspx – urbanhusky 2014-06-10 14:05:29
有與代碼MSDN上這個話題是一個不錯的article。我假設將Style屬性設置爲ProgressBarStyle.Marquee是不合適的(或者是你正在試圖控制的 - 我不認爲有可能停止/開始這個動畫,儘管你可以控制速度如@Paul所示)。
這不是他們的工作方式。通過使其可見,您可以「開始」選取框樣式進度條,您可以通過隱藏它來停止它。你可以改變Style屬性。
要啓動/停止動畫,你應該這樣做:
要啓動:
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 30;
要停止:
progressBar1.Style = ProgressBarStyle.Continuous;
progressBar1.MarqueeAnimationSpeed = 0;
停止時不需要設置`MarqueeAnimationSpeed`,啓動時它通常有一個合理的值。無需在每次啓動時進行設置。 – icktoofay 2010-05-12 17:10:18
此代碼是一個登錄形式,其中的一部分用戶等待認證服務器響應。
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace LoginWithProgressBar
{
public partial class TheForm : Form
{
// BackgroundWorker object deals with the long running task
private readonly BackgroundWorker _bw = new BackgroundWorker();
public TheForm()
{
InitializeComponent();
// set MarqueeAnimationSpeed
progressBar.MarqueeAnimationSpeed = 30;
// set Visible false before you start long running task
progressBar.Visible = false;
_bw.DoWork += Login;
_bw.RunWorkerCompleted += BwRunWorkerCompleted;
}
private void BwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// hide the progress bar when the long running process finishes
progressBar.Hide();
}
private static void Login(object sender, DoWorkEventArgs doWorkEventArgs)
{
// emulate long (3 seconds) running task
Thread.Sleep(3000);
}
private void ButtonLoginClick(object sender, EventArgs e)
{
// show the progress bar when the associated event fires (here, a button click)
progressBar.Show();
// start the long running task async
_bw.RunWorkerAsync();
}
}
}
許多很好的答案已經在這裏,但你還需要記住,如果你正在做的UI線程(通常是一個壞主意)在長時間運行的處理,那麼你將無法看到字幕移動無論是。
- 1. 在Windows窗體中繪製立方體的最簡單方法是什麼?
- 2. Windows窗體C#鍋到Mac OS X(最簡單的方式)
- 3. 獲取複選框價值的最簡單方法
- 4. 在Windows窗體中暫停控件事件的最佳方法?
- 5. Windows窗體單選按鈕單擊事件正在啓動
- 6. 停止複選框單擊窗體其他功能
- 7. 什麼是最簡單的方法來停止4流的soundpool
- 8. 簡單的javascript窗體行動方向
- 9. 如何通過Windows窗體應用程序啓動/停止Windows服務
- 10. 獲取最近啓動的應用程序的PID的最簡單方法
- 11. 在Xamarin.Forms中啓動,暫停和停止的簡單定時器
- 12. 使用datagridview行同步對話框窗體的最簡單方法?
- 13. 最簡單的方法來製作一個簡單的GUI窗體窗體應用程序
- 14. Windows窗體顯示單選框數據綁定簡單的例子
- 15. 最簡單的JQuery/Javascript懸停窗口?
- 16. ProgressBar在Windows窗體中速度很慢
- 17. 簡單的Windows窗體不顯示
- 18. 簡單的Windows窗體數據綁定
- 19. ProgressBar不會停止
- 20. C#Windows窗體GUI - 監視Windows啓動
- 21. jQuery的Ajax啓動和停止方法與取api
- 22. 簡單的窗體輸入作爲下拉框不選擇框
- 23. 在彈出窗口中讀取主機的最簡單方法?
- 24. Windows Phone 7(WP7)中的動畫最簡單的方法?
- 25. 通過PHP發送複選框的最簡單的方法
- 26. 停止作爲最上方的窗口
- 27. 啓動春季項目最簡單的方法是什麼?
- 28. 使用簡單的文本編輯器啓動Windows窗體項目?
- 29. 如何在android中啓動和停止progressbar?
- 30. 上啓動和停止鍵式簡單的時鐘
這是關於選擇進度條類型的一篇很好的文章http://msdn.microsoft.com/en-us/library/windows/desktop/aa511486.aspx – 2012-02-24 00:26:12