65.9K
CodeProject 正在变化。 阅读更多。
Home

进度任务列表控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.58/5 (12投票s)

2005年9月9日

2分钟阅读

viewsIcon

75417

downloadIcon

986

一个简单的控件,用于显示任务列表,并在程序完成任务时进行标记。

Sample Image

引言

对于某些任务,您只需要一个进度条来告诉用户任务的进展速度。您可能已经使用带有进度条的标签或状态栏,来告诉用户当前正在执行的任务。此控件显示所有需要执行的任务,并在完成时逐个进行标记。

使用代码

使用此控件非常容易。只需在您的 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,它可以确保指定的控件可见。我正要编写自己的函数,但不知怎的它就在那里了。我使用这个方法来确保当前任务始终可见。如右侧的屏幕截图所示,如果任务太多而无法容纳在面板表面上,则该控件可以优雅地处理滚动,这要归功于PanelAutoScroll属性。

工作原理

该控件有一个名为TaskItems的属性,它是一个string[],对应于需要执行的任务。我应该指出,该控件与运行任务的线程之间没有链接。因此,为了将控件更新到下一个任务,程序必须在每个任务完成后在控件上调用NextTask()

当在控件上调用Start()方法时,标签会被动态创建并添加到面板。每个标签的左侧都有一个图像,当任务完成时,该图像会从箭头变为勾号。

它实际上很简单。最困难的部分(到目前为止)是让TaskItems集合属性通过 VS 设计器工作。这是一次有用的控件设计练习。

结论

您可以随意使用此控件并根据需要进行修改。如果您有时间,请在此处发布您对控件所做的任何改进(作为评论),我会更新这篇文章。

© . All rights reserved.