這篇文章主要介紹了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();//关闭窗体 }
以上是C#實現帶有百分比的進度條功能的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!