进度条动态分层管理
来源:互联网 发布:仿绿茶软件园源码 编辑:程序博客网 时间:2024/06/06 11:28
public partial class ProcessBox : Form
{
public delegate void SetPos(int ipos);
public delegate void Complete();
public ProcessBox(string formText,string text, int maxValue)
{
InitializeComponent();
this.l_Waiting.Text = text;
this.Text = formText;
pb_processBox.Maximum = maxValue;
}
public void SetProcessBarValue(int value)
{
if (value != this.pb_processBox.Value)
{
SetPos setpos = new SetPos(UpdataProcessbar);
setpos(value);
}
}
public void Completed()
{
Complete complete = new Complete(DoComplete);
complete();
}
private void DoComplete()
{
if (this.InvokeRequired)
{
Complete complete = new Complete(DoComplete);
this.Invoke(complete);
}
else
{
this.Close();
}
}
private void UpdataProcessbar(int ipos)
{
if (this.InvokeRequired)
{
SetPos setpos = new SetPos(UpdataProcessbar);
this.Invoke(setpos, new object[] { ipos });
}
else
{
this.pb_processBox.Value = ipos;
}
}
}
public class ProcessBoxManager
{
public delegate void ProcessChanged(int process);
public event ProcessChanged OnProcessChanged;
public delegate void Completed();
public event Completed OnCompleted;
class StepInfor
{
public int stepCount;
public int currStep;
}
private ProcessBox _processBox = null;
private Stack<StepInfor> _stepInforStack = new Stack<StepInfor>();
//private StepInfor _stepInfor;
private int _process = 0;//0-100
public void PushStep(int stepCount)
{
if (stepCount <= 0)
{
stepCount = 1;
}
StepInfor _stepInfor;
_stepInfor = new StepInfor();
_stepInfor.stepCount = stepCount;
_stepInfor.currStep = 0;
_stepInforStack.Push(_stepInfor);
UpdataProcess();
}
public void NextStep()
{
StepInfor _stepInfor;
_stepInfor = _stepInforStack.Peek();
if (_stepInfor.currStep < _stepInfor.stepCount)
{
_stepInfor.currStep += 1;
}
UpdataProcess();
}
public void PopStep()
{
_stepInforStack.Pop();
}
private void UpdataProcess()
{
int process = 0;
int steps = 1;
StepInfor[] stepinfors = _stepInforStack.ToArray();
for (int i = stepinfors.Length - 1; i >= 0; i--)
{
StepInfor step = stepinfors[i];
steps = steps * step.stepCount;
process += (step.currStep) * 100 / steps;
}
if( _process != process)
{
_process = process;
OnProcessChanged(_process);
//_processBox.SetProcessBarValue(process);
}
}
public void ShowProcessBox(string formText,string text)
{
_process = 0;
_processBox = new ProcessBox(formText,text, 100);
_processBox.TopMost = true;
OnProcessChanged += new ProcessChanged(_processBox.SetProcessBarValue);
OnCompleted += new Completed(_processBox.Completed);
new Thread((ThreadStart)delegate
{
Application.Run(_processBox);
}).Start();
}
public void CloseProcessBox()
{
OnCompleted();
}
}
- 进度条动态分层管理
- 动态进度条
- 动态进度条
- TCP/IP的分层管理
- 分层式 学生管理系统
- 动态实时进度条
- abap动态进度条
- abap动态进度条
- php js 动态进度条
- 动态页面加载进度条
- 进度条动态加载
- CSS 动态进度条效果
- 动态创建进度条对话框
- 动态显示进度条
- 动态刷新可见进度条
- bootstrap得动态进度条
- jquery 动态实现进度条
- css实现动态进度条
- c++后序遍历结果扭转推算出树的结构
- fstab详解
- ul li css 做横向菜单
- NET:Error Creating Control -"Object Reference Not Set To An Instance Of Object"
- C++项目笔记
- 进度条动态分层管理
- Java NIO FileChannel
- Java中关于cookie的理解
- linux下通过yum安装svn及配置
- 搭建 Nexus2.7.2-03 + Maven3.1.1 + JAVA Project 管理
- IOS7 导航栏item完美设置[UIBarButtonItem appearance]
- funcode项目笔记
- Android ListView条目全选功能,不用checkbox实现!
- 一年三篇IF大于7的牛人告诉你怎么写SCI