介绍
这是我在CodeProject上的第一篇文章。我希望对你有用
当我开发软件的时候。我通常因为一个很耗时是任务需要完成。而请求让用户等待,并且通过也允许用户取消。不论我做何种操作(比如下载文件。保存大文件等等)。我都需要做下面几件事:
- 通过一个模态对话框来让用户等待操作完成
- 能让用户看到进度。
- 能让用户随时取消。
我搜了好久也没找到拿来就能用的窗体控件,也许是我没找到。于是我自己写。。
图1
背景
BackgroundWorker 类包含了我需要完成任务的所有东西。我只需要给他提供一个对话框。
使用代码
ProgressForm 包含了一个BackgroundWorker ,你要做的仅仅就是提供了一个完成工作的方法。
为了开始BackgroundWorker,只需要调用ShowDialog 方法。返回值则取决于任务是怎么完成的。
最后。任务方法看起来是这样的。
如果你想要改改进度条,或者进度条显示的文本。SetProgress 有一些重载的方法
最后一个可自定义的字符串是:有两个预定义的字符串CancellingText 和DefaultStatusText. CancellingText ,这两个字符串,当用户点击取消的时候显示
如何实现
ProgressForm 紧紧嵌入了一个BackgroundWorker ,并包装进了主函数。
首先。我设计了如图所示的一个窗体,然后。添加了BackgroundWorker。
我们必须把DoWork事件暴露给用户。我添加了一个委托。这样。我可以很容易的访问窗体成员
好。我们已经有了任务和事件。先爱。我们希望当窗体显示的时候。后台任务尽可能开始。我们在Load事件中写代码
我们快做好了。现在我们添加取消按钮
主要的工作就完成了。我添加了一些预定义的字符串啊。如果正在取消。保护状态不会改变。还有传递参数啊。
完整的代码如下:
结论
窗体简单,我通常用。希望对你们也有用
Demo下载
许可
本文,包括源代码和文件在CPOL下授权。
原文地址:ProgressForm-A-simple-form-linked-to-a-BackgroundW
著作权声明:本文由http://leaver.me 翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
原文链接:http://www.cnblogs.com/lazycoding/archive/2012/10/10/2717739.html