翻译如下:

介绍
在一些项目中,你需要来告诉用户任务进展的多快。以往你可能会用一个标签(Label)或一个状态栏(Status bar)加一个进度条(Progress bar)来告诉用户任务现在执行到哪一步了。这个控件可以轻松实现上面的要求,它展示所有需要被执行的任务,而且当每项任务完成后都会在它前面画个勾。
使用代码
使用这个控件非常容易。只要在你的Windows Forms项目中添加对ProgressTaskList.dll(包含在Source和Demo项目中)的引用就行了。如果它没有出现在VS的工具箱(ToolBox)中,你就右键点击工具箱选择“添加/移除项”然后浏览到那个dll点确定即可。之后就可以把这个控件拖拽到窗体上了。
你可以通过Visual Studio的设计器设置任务。找到TaskItems属性,安后点击(Collection)按钮编辑条目,每行写一个任务。
或者通过手写代码的方式设置任务:
// 用AddRange()一次添加多条任务
this.progressTaskList1.TaskItems.AddRange(new string[]
{"Loading",
"Initialising", "Whatever", "Saving"});
// 或使用 Add() 方法一条条添加
this.progressTaskList1.TaskItems.Add("Loading");
this.progressTaskList1.TaskItems.Add("Initialising");


你需要调用Start()来在控件中绘制任务,然后当一个任务完成后调用NextTask()来启动下一个任务。
我惊奇的发现Panel控件里有一个叫ScrollControlIntoView的内建函数来确保指定控件可见。当我准备写自己的类似功能函数时,刚好发现Panel里面已经有了这个函数。我就用这个方法来确保当前任务总是可见的。在下面的截图里可以看到,如果面板表面被任务占满了,这个控件就会自动滚动,这还要多谢Panel的AutoScroll属性。
这个控件有一个叫TaskItems的string[]类型的属性,对应于需要被执行的任务。需要说明的是,这个控件和运行任务的线程没有任何关联,所以为了在下个任务执行前更新控件,程序必须在每个任务完成后调用NextTask()方法。
当控件的Start()方法被调用时,标签(label)就会被动态创建然后添加到面板(panel)上。每个标签左边都有一个图片,当任务完成后都会由箭头变成勾勾。
这个控件的设计过程确实很简单。最难的部分(目前为止)就是使TaskItems集合属性在VS设计器里正常工作。这些经验将对我今后的控件设计有一定的帮助。
结论
你可以没有任何限制的使用这个控件并且根据你的意愿修改它。如果你有时间,就将你对这个控件作出的改进发表上来(作为评论),我将更新这篇文章。
ps:这个控件可以满足一般的需要,但想要更改显示的图片、文字位置之类的还是得到源代码中改再编译。这个控件使用了控件的BeginInvoke方法来异步调用代理,好像可以在调用完方法后立即返回原来的执行位置吧,具体的原理和原因我也不清楚,有哪位高手可以指点一下么?
