c# 进度条的使用(例子)

来源:互联网 发布:凤凰鸣组合知乎 编辑:程序博客网 时间:2024/05/17 10:40

 在用c#做WinFrom开发的过程中。我们经常需要用到进度条(ProgressBar)用于显示进度信息。这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息)。下面我就简单结合一个我写的例子给大家做一个介绍。
首先看一下程序界面


第一步:设计界面不说了...注意需要引用 using System.Threading;
第二步:定义一个代理,用于更新ProgressBar的值(Value)

 

        //更新进度列表
        private delegate void SetPos(int ipos); alimama_pid="mm_10249644_1605763_5018464"; alimama_type="f"; alimama_sizecode ="tl_1x1_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=0;
第三步:进度条值更新函数(参数必须跟声明的代理参数一样)

 

        private void SetTextMessage(int ipos)
        {
            if (this.InvokeRequired)
            {
                SetPos setpos = new SetPos(SetTextMessage);
                this.Invoke(setpos, new object[] { ipos});
            }
            else
            {
                this.label1.Text = ipos.ToString() + "/100";
                this.progressBar1.Value = Convert.ToInt32(ipos);
            }
        }
第四步:函数实现

 

        private void button1_Click(object sender, EventArgs e)
        {
            Thread fThread = new Thread(new ThreadStart(SleepT));//开辟一个新的线程
            fThread.Start();
        }
第五步:新的线程执行函数:

 

        private void SleepT()
        {
            for (int i = 0; i < 500; i++)
            {
                System.Threading.Thread.Sleep(100);//没什么意思,单纯的执行延时
                SetTextMessage(100 * i / 500);
            }
        }
到此一个简单的进度条程序做好了。简单吧。剩下就靠你自己改造喽。转载请注明一个出处吧。http://blog.csdn.net/gisfarmer谢谢了。 alimama_pid="mm_10249644_1605763_5027492"; alimama_type="f"; alimama_sizecode ="tl_1x5_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=512;


文章出处:DIY部落(http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090308/159855.html)

原创粉丝点击