您好,登錄后才能下訂單哦!
這篇文章主要介紹了C#如何實(shí)現(xiàn)帶百分比的進(jìn)度條功能,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
功能需求:
如果程序中會(huì)執(zhí)行一個(gè)耗時(shí)的計(jì)算過(guò)程,我想在用戶點(diǎn)擊按鈕后,彈出一個(gè)進(jìn)度條窗口,顯示正在執(zhí)行的進(jìn)度(最好能帶有百分比),執(zhí)行完成后,進(jìn)度條窗口關(guān)閉,回到主程序窗口。 在關(guān)閉子窗口之前父窗體不能點(diǎn)擊操作。
實(shí)現(xiàn)方法:
先設(shè)計(jì)Form2進(jìn)度條窗體,在Form2中央上放ProgressBar控件progressBar1和Label控件label1,代碼:
public partial class Form2 : Form { public Form2(int _Minimum,int _Maximum)//帶參數(shù),表示進(jìn)度條的范圍的最小值和最大值 { InitializeComponent(); progressBar1.Maximum=_Maximum;//設(shè)置范圍最大值 progressBar1.Value = progressBar1.Minimum = _Minimum;//設(shè)置范圍最小值 } public void setPos(int value)//設(shè)置進(jìn)度條當(dāng)前進(jìn)度值 { if (value < progressBar1.Maximum)//如果值有效 { progressBar1.Value = value;//設(shè)置進(jìn)度值 label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";//顯示百分比 } Application.DoEvents();//重點(diǎn),必須加上,否則父子窗體都假死 } private void Form2_Load(object sender, EventArgs e) { this.Owner.Enabled = false;//設(shè)置父窗體不可用 } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { this.Owner.Enabled = true;//回復(fù)父窗體為可用 } }
調(diào)用窗體For1m設(shè)計(jì),添加Button控件button1,事件代碼:
private void button1_Click(object sender, EventArgs e) { Form2 fm = new Form2(0,100); fm.Show(this);//設(shè)置父窗體 for (int i = 0; i < 100; i++) { fm.setPos(i);//設(shè)置進(jìn)度條位置 Thread.Sleep(100);//睡眠時(shí)間為100 } fm.Close();//關(guān)閉窗體 }
補(bǔ)充:有朋友說(shuō)在vs2003中fm.Show(this):是不支持的,那么可以將From2的構(gòu)造函數(shù)多加一個(gè)參數(shù):
public Form OwnerForm; public Form2(int _Minimum,int _Maximum,Form _OwnerForm)//帶參數(shù),表示進(jìn)度條的范圍的最小值和最大值 { InitializeComponent(); progressBar1.Maximum=_Maximum;//設(shè)置范圍最大值 progressBar1.Value = progressBar1.Minimum = _Minimum;//設(shè)置范圍最小值 this.OwnerForm=_OwnerForm; } private void Form2_Load(object sender, EventArgs e) { this.OwnerForm.Enabled = false;//設(shè)置父窗體不可用 } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { this.OwnerForm.Enabled = true;//回復(fù)父窗體為可用 }
Form1中相應(yīng)的修改為:
private void button1_Click(object sender, EventArgs e) { Form2 fm = new Form2(0,100,this); fm.Show();//設(shè)置父窗體 for (int i = 0; i < 100; i++) { fm.setPos(i);//設(shè)置進(jìn)度條位置 Thread.Sleep(100);//睡眠時(shí)間為100 } fm.Close();//關(guān)閉窗體 }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享C#如何實(shí)現(xiàn)帶百分比的進(jìn)度條功能內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問(wèn)題就找億速云,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。