1. 程式人生 > >C# 控制元件 [2] : ProgressBar (顯示百分比)

C# 控制元件 [2] : ProgressBar (顯示百分比)

1 繼承關係

Object→MarshalByRefObject→Component→Control→ProgressBar
ProgressBar表示Windows進度欄控制元件。

2 重要屬性

序號 屬性 型別 用法
1 pBar.Visible bool 獲取或設定進度條控制元件可見或不可見
2 pBar1.Minimum int 獲取或設定控制元件範圍的最小值。預設值為0。
3 pBar1.Maximum int 獲取或設定控制元件範圍的最大值。預設值為 100。
4 pBar1.Value int 獲取或設定進度欄的當前位置。預設值為 0。
5 pBar1.Step int 獲取或設定呼叫 PerformStep() 方法增加進度欄進度的步長,預設值為 10。

3 示例

3.1 製作簡單的進度條

①winForm窗體拖入一個ProgressBar控制元件,一個button控制元件,用於觸發進度條。
在這裡插入圖片描述


②窗體程式碼加入如下函式,在按鈕click事件函式中加入startProgress()

private void startProgress()
{
     // 顯示進度條控制元件.
     pBar1.Visible = true;
     // 設定進度條最小值.
     pBar1.Minimum = 1;
     // 設定進度條最大值.
     pBar1.Maximum = 15;
     // 設定進度條初始值
     pBar1.Value = 1;
     // 設定每次增加的步長
     pBar1.Step = 1;

     // 迴圈執行
     for (int x = 1; x <= 15; x++)
     {
           // 每次迴圈讓程式休眠300毫秒
           System.Threading.Thread.Sleep(300);
           // 執行PerformStep()函式
           pBar1.PerformStep(); 
      }
      pBar1.Visible = false;
      MessageBox.Show("success!");
}
private void button1_Click(object sender, EventArgs e)
{
     startProgress();
}

效果如下:
在這裡插入圖片描述

3.2 進度條顯示百分比

方法參考:追夢使者87的部落格
主要步驟:
①為ProgressBar新增Graphics物件
②使用DrawString()繪製文字
注:DrawString(String, Font, Brush, RectangleF)//繪製的文字,字型,畫刷,文字位置
改寫startProgress()函式

private void startProgress()
 {
      pBar1.Visible = true;// 顯示進度條控制元件.
      pBar1.Minimum = 1;// 設定進度條最小值.
      pBar1.Maximum = 15;// 設定進度條最大值.
      pBar1.Value = 1;// 設定進度條初始值
      pBar1.Step = 1;// 設定每次增加的步長
      //建立Graphics物件
      Graphics g =  this.pBar1.CreateGraphics();
      for (int x = 1; x <= 15; x++)
      {     
           //執行PerformStep()函式
           pBar1.PerformStep(); 
           string str = Math.Round((100 * x / 15.0), 2).ToString("#0.00 ") + "%";
           Font font = new Font("Times New Roman", (float)10, FontStyle.Regular);
           PointF pt = new PointF(this.pBar1.Width / 2 - 17, this.pBar1.Height / 2 - 7);
           g.DrawString(str, font, Brushes.Blue, pt);
           //每次迴圈讓程式休眠300毫秒
           System.Threading.Thread.Sleep(300);
       }
       pBar1.Visible = false;
       //MessageBox.Show("success!");
}

效果如下:
在這裡插入圖片描述