程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 如何制作WinForm中自定義進度條

如何制作WinForm中自定義進度條

編輯:C#入門知識

前2天在網上找到一個很有意思的進度條控件,拿出來給大家分享一下,順便記錄一下自己的學習心得。

   先截個圖看看效果:

ProgressBar

     由於項目需要,要在復雜的執行中給用戶展示執行進度,難免的就會涉及到進度條。在codeproject上面看到一個叫Progress-O-Doom的進度條控件,看了一下覺得蠻有意思的,就下了個回來研究了一下。發現它的進度條都是由一些子控件繪畫出來的,包括專門畫邊框的,專門畫滾動條背景的,專門畫滾動條的。好像是把一個進度條分解成了好幾個東西去分別繪制,而且有些是可以自由組合的,最終組合而成的進度條可以有多種效果,可以自己試驗一下,考驗想象力的時候到了。

    除了最基本的ProgressBarEx這個控件之外,還有幾種內置的滾動條控件,包括Rar樣式的RarProgressBar、包含二層滾動條的DualProgressBar.跑按照作者的設計的話其實是只需要一個ProgressBarEx,再加上一些ProgressPainter,BackgroundPainter,BorderPainter,就可以組合出很酷的進度條。其中ProgressPainter也可以單獨設置自己的GlossPainter和BorderPainter屬性,而BackgroundPainter也是可以設置它的GlossPainter屬性的,就這種靈活的組合,很方便,而且作者都是有可視化界面的,拖拖拽拽,點點鼠標設置一下,就可以弄一個很酷的進度條出來。

    用一個DualProgressBar就可以解決我項目的需求,因為我有二層的for循環,第一層的滾動條顯示外層的循環,第二層的滾動條顯示裡層的循環,蠻好的。

   先在窗體上面放置一個DualProgressBar,這個類型的滾動條需要4個Painter去描繪,Painter ,所以可以再分別在窗體上面選擇對應類型的Painter,然後分別設置好Painter的屬性,主要是顏色類和樣式類,有的還涉及到二種顏色,有的樣式可以設置為突出或是凹進去或者和窗體平齊,3D效果之類的。其實像這個進度條設置一下MasterValue和Value就可以在設計的時候看出它其實是二個進度條的組合了。這裡MasterPainter和ProgressPainter要設置成2個不一樣的ProgressPainter,至少要顏色不一樣才能看得到是二個在同時滾動嘛。

    後台代碼的使用也是比較簡單的,主要就是對MasterValue和Value賦值就可以了。設置2個參數,第一個是第一層的循環次數,第二個參數是第二層循環的次數。

/// <summary>
/// Shows the progress.
/// </summary>
/// <param name="firstLoop">The first loop count.</param>
/// <param name="secondLoop">The second loop count.</param>
private void ShowProgress(int firstLoop, int secondLoop)
{
    dualProgressBar1.Value = 0;
    dualProgressBar1.MasterValue = 0;
    dualProgressBar1.Maximum = secondLoop;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved