博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ProgressForm
阅读量:6678 次
发布时间:2019-06-25

本文共 2420 字,大约阅读时间需要 8 分钟。

简介

在winform项目中,我们常常需要弹出一个窗体显示处理的进度,All in one code中的progress不能满足我们的需求,所以就有了ProgressForm.

ProgressForm对外开放了一个DoExecute抽象方法,以便使用者override .

public abstract class Action
{
protected abstract TResult DoExecute(ProgressForm
progressForm);
 
public TResult Execute(Form ownerForm, string title, string initialMessage, bool customProgress = false)
{
return ProgressForm
.ExecuteAction(ownerForm, new ExecuteActionDelegate
(DoExecute), title, initialMessage, customProgress);
}
}
 

ProgressForm继承自IProgressDelegate,以便通知界面更改进度条百分比和Message .

public partial class ProgressForm
: Form, IProgressDelegate

接口定义:

/// 
/// Public interface used to notify progress changes
/// 
public interface IProgressDelegate
{
void NotifyProgressMessageChanged(string message);
void NotifyProgressChanged(int percentage);
}

 

使用方式

 
private void testProgress_Click(object sender, EventArgs e)
{
TestClass t = new TestClass();
t.Execute(this.ParentForm, "窗体名称", "Message", true);
}

 

重写DoExecute

 
public class TestClass : DeploymentTools.UserInterface.Actions.Action
{
protected override string  DoExecute(ProgressForm
progressForm)
{
progressForm.NotifyProgressChanged(10);
progressForm.NotifyProgressMessageChanged("已经完成10%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(20);
progressForm.NotifyProgressMessageChanged("已经完成20%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(30);
progressForm.NotifyProgressMessageChanged("已经完成30%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(40);
progressForm.NotifyProgressMessageChanged("已经完成40%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(50);
progressForm.NotifyProgressMessageChanged("已经完成50%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(60);
progressForm.NotifyProgressMessageChanged("已经完成60%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(70);
progressForm.NotifyProgressMessageChanged("已经完成70%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(80);
progressForm.NotifyProgressMessageChanged("已经完成80%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(90);
progressForm.NotifyProgressMessageChanged("已经完成90%");
Thread.Sleep(2000);
progressForm.NotifyProgressChanged(100);
progressForm.NotifyProgressMessageChanged("全部处理完成!");
Thread.Sleep(2000);
return string.Empty;
}
}

这里返回值是string,我们可以返回任何类型TResult,以便两个窗体之间的交互。

 

ProgressForm下载

转载地址:http://vcyao.baihongyu.com/

你可能感兴趣的文章
Lungo 使用说明及心得 中文api —— JavaScript部分
查看>>
Golang实现简单tcp服务器02 -- 实现echo服务器/客户端
查看>>
请教一个关于类加载的问题
查看>>
spring @RequestParam, @RequestBody Map注入注意事项
查看>>
游戏性能测试
查看>>
erlang中的link/0函数
查看>>
ADX3000 三层网络 纠错
查看>>
Android 项目导入后真机运行提示:W/dalvikvm(10375): VFY 错误
查看>>
redis数据丢失及解决
查看>>
Android 刷新view
查看>>
Windows 7下 找不到msxml.dll的错误的解决方法
查看>>
多机集群环境搭建hadoop笔记
查看>>
如何将maven项目打包成可执行的jar
查看>>
Centos 服务器软件安装
查看>>
[linux]fork、source、exec、ulimit
查看>>
android AsyncTask简单使用
查看>>
正则表达式
查看>>
JQuery插件开发研究
查看>>
关于C++类静态成员在Delphi中实现的思考
查看>>
Codeforces Round #278 (Div. 2) b
查看>>