进度任务列表控件






4.58/5 (12投票s)
2005年9月9日
2分钟阅读

75417

986
一个简单的控件,用于显示任务列表,并在程序完成任务时进行标记。
引言
对于某些任务,您只需要一个进度条来告诉用户任务的进展速度。您可能已经使用带有进度条的标签或状态栏,来告诉用户当前正在执行的任务。此控件显示所有需要执行的任务,并在完成时逐个进行标记。
使用代码
使用此控件非常容易。只需在您的 Windows Forms 项目中添加对ProgressTaskList.dll(包含在源代码和演示项目中)的引用即可。如果它没有出现在 VS 工具箱中,您可以右键单击并选择“添加/移除项”,浏览到 DLL 并单击“确定”。然后只需将其拖到您的窗体表面即可。
您可以通过 Visual Studio 设计器设置任务。查看“TaskItems
”属性,然后单击“(集合)”按钮来编辑项目。每行放置一个任务。
或者,您可以以编程方式设置任务。
// To add items programatically, use the following syntax:
this.progressTaskList1.TaskItems.AddRange(new string[]{"Loading",
"Initialising", "Whatever", "Saving"});
// or you can just use the normal Add() method
this.progressTaskList1.TaskItems.Add("Loading");
this.progressTaskList1.TaskItems.Add("Initialising");
...
您需要调用Start()
才能在控件中绘制任务,然后每当完成任务时调用NextTask()
,以进入下一个任务。
关注点
我惊讶地发现Panel
控件有一个内置函数叫做ScrollControlIntoView
,它可以确保指定的控件可见。我正要编写自己的函数,但不知怎的它就在那里了。我使用这个方法来确保当前任务始终可见。如右侧的屏幕截图所示,如果任务太多而无法容纳在面板表面上,则该控件可以优雅地处理滚动,这要归功于Panel
的AutoScroll
属性。
工作原理
该控件有一个名为TaskItems
的属性,它是一个string[]
,对应于需要执行的任务。我应该指出,该控件与运行任务的线程之间没有链接。因此,为了将控件更新到下一个任务,程序必须在每个任务完成后在控件上调用NextTask()
。
当在控件上调用Start()
方法时,标签会被动态创建并添加到面板。每个标签的左侧都有一个图像,当任务完成时,该图像会从箭头变为勾号。
它实际上很简单。最困难的部分(到目前为止)是让TaskItems
集合属性通过 VS 设计器工作。这是一次有用的控件设计练习。
结论
您可以随意使用此控件并根据需要进行修改。如果您有时间,请在此处发布您对控件所做的任何改进(作为评论),我会更新这篇文章。