首页 理论教育 使用ProgressBar和BackgroundWorker

使用ProgressBar和BackgroundWorker

时间:2023-10-22 理论教育 版权反馈
【摘要】:ProgressBar控件即进度条控件,能够在水平方框内显示合适数目的矩形符号,这些符号用于指明当前某项工作的进度。ProgressBar控件的常用属性如下:Value:表示操作过程已经完成的进度。为了解决上述问题,在.NET框架中引入了BackgroudWorker控件。图15-33 窗体的组件栏实例74:使用ProgressBar和BackgroudWorker控件下面将通过一个具体的实例来说明,ProgressBar和BackgroudWorker的综合使用过程。2)从工具箱中拖入到窗体顶部一个ProgressBar控件,设置name为“progressBar1”,并调整它的大小。

使用ProgressBar和BackgroundWorker

ProgressBar控件即进度条控件,能够在水平方框内显示合适数目的矩形符号,这些符号用于指明当前某项工作的进度。例如,常见的进度条控件应用是安装进度和下载进度。而BackgroudWorker是一个组件,也被常用于进度操作的项目,其功能是用于异步执行需要多长时间能够完成操作。

ProgressBar控件的常用属性如下:

978-7-111-36370-5-Part03-358.jpgValue:表示操作过程已经完成的进度。

978-7-111-36370-5-Part03-359.jpgMinimum:设置进度条可以显示的最小值。

978-7-111-36370-5-Part03-360.jpgMaixmum:设置进度条可以显示的最大值。

通常使用代码来设置Value的值,这样可以更新当前的进度值。另外也可以设置Step属性来指定Value的递增值。

如果使用ProgressBar控件来表示工作进度所需要的时间,上述操作会经常导致用户操作运行界面的挂起。为了解决上述问题,在.NET框架中引入了BackgroudWorker控件。通过BackgroudWorker控件,可以在不同程序的主用户界面线程的另一线程上异步执行耗时的操作,这样就分担了ProgressBar的工作负担,从而避免了挂起。

注意

如果在窗体中使用组件,从工具箱中拖入的组件会在窗体的组件栏中显示,如图15-33所示。

978-7-111-36370-5-Part03-361.jpg

图15-33 窗体的组件栏

实例74:使用ProgressBar和BackgroudWorker控件

下面将通过一个具体的实例来说明,ProgressBar和BackgroudWorker的综合使用过程。本实例保存在“光盘:\daima\15”文件夹内,项目名为jinduchuli,功能是在窗体设置一个进度框,并统计对应处理所需要的时间。本实例的具体实现流程如下。

1)在Visual Studio 2010中新建一个名为“jinduchuli”的Windows应用程序。

2)从工具箱中拖入到窗体顶部一个ProgressBar控件,设置name为“progressBar1”,并调整它的大小。

3)从工具箱中拖入到progressBar1下方一个Label控件,设置name为“label1”,设置Text属性值为“处理的次数:”。

4)从工具箱中分别拖入到窗体底部两个Button控件,从左到右依次进行如下设置。

978-7-111-36370-5-Part03-362.jpg第一个Button:设置属性name值为“button1”,设置Text属性为“开始”。

978-7-111-36370-5-Part03-363.jpg第二个Button:设置属性name值为“button2”,设置Text属性为“结束”。

5)从工具箱中拖入一个BackgroudWorker组件,设置name为“backgroundWorker1”,设置WorkerReportsProgress属性值为“True”,设置WorkerSupportsCancell属性值为“True”。

6)选中backgroundWorker1,在“属性”的“事件”界面分别双击DoWork、ProgressChanged和RunWorkerCompleted事件,并在Form1.cs中为上述组件添加对应的事件处理方法,具体代码如下:

978-7-111-36370-5-Part03-364.jpg(www.xing528.com)

978-7-111-36370-5-Part03-365.jpg

7)经过上述操作处理后,整个项目设计完毕。最终的具体设计界面如图15-34所示。

当上述项目运行后,会按照指定的样式显示窗体的各个元素,如图15-35所示。当单击“开始”按钮后会显示对应的处理进度条,如图15-36所示。处理完毕后会弹出显示结果的对话框,如图15-37所示。当在处理次数框内输入另外的数据并单击“开始”按钮后,也会进行对应的进度处理。

978-7-111-36370-5-Part03-366.jpg

图15-34 项目设计界面结构

978-7-111-36370-5-Part03-367.jpg

图15-35 窗体界面效果

978-7-111-36370-5-Part03-368.jpg

图15-36 处理进度条

978-7-111-36370-5-Part03-369.jpg

图15-37 处理结果对话框

至此,整个项目设计完毕。各控件的属性设置代码在文件Form1.Designer.cs内,主要代码格式如下:

978-7-111-36370-5-Part03-370.jpg

事件处理代码在文件Form1.cs内,而文件Program.cs是项目的入口程序。

多学一招

在实际软件项目开发过程中,经常会使用ProgressBar控件实现进度条效果。如果要显示按固定时间间隔增长的进度,则可以设置该值,然后调用方法,使ProgressBar控件的值按该时间间隔递增。对于计时器以及其他一些无法以整体的百分比测量进度的方案,这是非常有用的。具体来说有如下两方面应用。

(1)使进度栏按固定值递增

设置ProgressBar控件的Minimum和Maximum值,将控件的Step属性设置为整数,该整数代表进度栏的显示值递增的数量,然后调用PerformStep()方法,使显示值按Step属性中设置的数量进行更改。

(2)使进度栏按动态值递增

设置ProgressBar控件的Minimum和Maximum值,调用Increment()方法,使显示值按指定的整数进行更改。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈