winform进度条实现
生活随笔
收集整理的這篇文章主要介紹了
winform进度条实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近要給一個(gè) Winform 項(xiàng)目添加功能,需要一個(gè)能顯示進(jìn)度條的彈窗,還要求能夠中止任務(wù),所以就做了一個(gè),在此做個(gè)記錄總結(jié)。雖然用的是比較老的 Winform 技術(shù),不過其中的原理都是相通的。
loading隨處可見,比如一個(gè)app經(jīng)常會(huì)有下拉刷新,上拉加載的功能,在刷新和加載的過程中為了讓用戶感知到 load 的過程,我們會(huì)使用一些過渡動(dòng)畫來表達(dá)。最常見的比如“轉(zhuǎn)圈圈”,“省略號(hào)”等等。
使用c#做WinFrom開發(fā),要實(shí)現(xiàn)進(jìn)度條效果就需要用到多線程,如果不采用多線程控制進(jìn)度條,窗口很容易假死。
1、設(shè)計(jì)界面,注意需要引用?using?System.Threading;
控件名稱分別為:
progressBar1;label1;textBox1;button1;
2、定義一個(gè)代理,用于更新ProgressBar的值(Value)及在執(zhí)行方法的時(shí)候,返回方法的處理信息。
private?delegate?void?SetPos(int?ipos,string?vinfo);3、進(jìn)度條值更新函數(shù)
private void SetTextMesssage(int ipos,string vinfo){if (this.InvokeRequired){SetPos setpos = new SetPos(SetTextMesssage);this.Invoke(setpos, new object[] { ipos,vinfo });}else{this.label1.Text = ipos.ToString() + "/1000";this.progressBar1.Value = Convert.ToInt32(ipos);this.textBox1.AppendText(vinfo);}}4、函數(shù)實(shí)現(xiàn)
private void button1_Click(object sender, EventArgs e){Thread fThread = new Thread(new ThreadStart(SleepT));fThread.Start();}5、新的線程執(zhí)行函數(shù):
private void SleepT(){for (int i = 0; i < 500; i++){System.Threading.Thread.Sleep(10);SetTextMesssage(100*i/500,i.ToString()+"\r\n");}}總結(jié)
以上是生活随笔為你收集整理的winform进度条实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过 C# 生成安全的 Base64
- 下一篇: 适配Win11!Edge重磅更新来袭