這篇文章主要介紹了C#實現帶百分比的進度條功能,分析了帶百分比進度條的功能需求並結合執行個體形式給出了具體實現步驟與相關操作方法,需要的朋友可以參考下
本文執行個體講述了C#實現帶百分比的進度條功能。分享給大家供大家參考,具體如下:
功能需求:
如果程式中會執行一個耗時的計算過程,我想在使用者點擊按鈕後,彈出一個進度條視窗,顯示正在執行的進度(最好能帶有百分比),執行完成後,進度條視窗關閉,回到主程式視窗。 在關閉子視窗之前父表單不能點擊操作。
實現方法:
先設計Form2進度條表單,在Form2中央上放ProgressBar控制項progressBar1和Label控制項label1,代碼:
public partial class Form2 : Form{ public Form2(int _Minimum,int _Maximum)//帶參數,表示進度條的範圍的最小值和最大值 { InitializeComponent(); progressBar1.Maximum=_Maximum;//設定範圍最大值 progressBar1.Value = progressBar1.Minimum = _Minimum;//設定範圍最小值 } public void setPos(int value)//設定進度條當前進度值 { if (value < progressBar1.Maximum)//如果值有效 { progressBar1.Value = value;//設定進度值 label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";//顯示百分比 } Application.DoEvents();//重點,必須加上,否則父子表單都假死 } private void Form2_Load(object sender, EventArgs e) { this.Owner.Enabled = false;//設定父表單不可用 } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { this.Owner.Enabled = true;//回複父表單為可用 }}
調用表單For1m設計,添加Button控制項button1,事件代碼:
private void button1_Click(object sender, EventArgs e){ Form2 fm = new Form2(0,100); fm.Show(this);//設定父表單 for (int i = 0; i < 100; i++) { fm.setPos(i);//設定進度條位置 Thread.Sleep(100);//睡眠時間為100 } fm.Close();//關閉表單}
補充:有朋友說在vs2003中fm.Show(this):是不支援的,那麼可以將From2的建構函式多加一個參數:
public Form OwnerForm;public Form2(int _Minimum,int _Maximum,Form _OwnerForm)//帶參數,表示進度條的範圍的最小值和最大值{ InitializeComponent(); progressBar1.Maximum=_Maximum;//設定範圍最大值 progressBar1.Value = progressBar1.Minimum = _Minimum;//設定範圍最小值 this.OwnerForm=_OwnerForm;}private void Form2_Load(object sender, EventArgs e){ this.OwnerForm.Enabled = false;//設定父表單不可用}private void Form2_FormClosed(object sender, FormClosedEventArgs e){ this.OwnerForm.Enabled = true;//回複父表單為可用}
Form1中相應的修改為:
private void button1_Click(object sender, EventArgs e){ Form2 fm = new Form2(0,100,this); fm.Show();//設定父表單 for (int i = 0; i < 100; i++) { fm.setPos(i);//設定進度條位置 Thread.Sleep(100);//睡眠時間為100 } fm.Close();//關閉表單}