返回首页

{A}
{S0}简介
这是一个非常简单的类,开发一点点的生活更加舒适,仅此而已,无所不及。它显示在StatusStrip,反映一个PerformanceCounter实例变化的一个小图表。您可以使用它作为一个简单的图表,图表与文字,或作为文本的唯一项目。无论您在应用程序中使用了多少项目,他们都触发,由一个单一的System.Timer.Timer的实例,以避免内存和资源的浪费。有它的乐趣。警告
由于张贴帕特里克西尔斯拿起的PerformanceCounter使用语言的特定值的CategoryName,CounterName和InstanceName属性。如果你不使用英语或德语系统,它的开放示范项目后,在您的系统需要重置这些值,否则,程序将抛出一个异常。背景
当开发一个应用程序通过TWAIN接口加载了大量的图像,并将它们发送到一个SQL Server,我发现我经常打开任务管理器查看CPU和内存的情况。懒惰如我,我决定有一天,应该有一个StatusStrip,而不是使用第二个窗口中看到这些值的可能性。所以,我搜索网站(优先,CodeProject上的网页!)来找出如何实现这一点。我发现的第一件事情是,我不得不使用PerformanceCounter类,这是非常容易管理。然后,我看到有很多的解决方案,但没有涵盖我需要有一个非常简单的的使用状态条项目... ...所以,想我所做的... ...使用PerformanceCounterItem控制
使用的ToolStripStatusPerformanceCounterItem很简单。如果类是项目的一部分,在这个例子,或者如果已与包含它的外部DLL,只需添加一个实例你StatusStrip:

然后,添加的PerformanceCounter到您的表单,并配置所需的值,它的类别名称,CounterName和InstanceName属性,并设置该项目的PerformanceCounter属性到这个实例。就是这样。 (例如使用一个项目,显示的处理器时间和提交内存另一个。)该项目的行为完全像其他ToolStripStatusLabel,Image属性设置为任何图像,让你可以使用任何其众所周知的属性,为例如,TextImageRelation属性决定图像和文字会出现。要自定义的图表,有ChartStyle属性,在这里你可以选择一些颜色控制,以适应您的需求。 Caption属性可以显示文本的价值。它使用String.Format方法相同的模式,这样你会很容易识别。例如,代码:

...

this.performanceCounterItem1.Caption = "{0:0} %"

...

将显示CPU使用率,作为一个'%'符号,无小数。最大和最小的属性,您可以调整将在图表中显示的最大值和最小值。 ChartStyle.AutoSizeText属性设置一个字符串,将占用的可能值的最大长度,可以防止从项目的大小,改变其价值的每一个变化。这肯定不是最好的方式来解决这个问题,但我希望有一个敏锐的程序员会告诉我一个更聪明的解决方案。
如果你需要的项目,如的另一个实例,显示内存使用情况的例子,然后添加PerformanceCounter实例到窗体中,申请的CategoryName,CounterName和INSTANCENAME所需的设置,然后设置新PerformanceCounterStatusItem的属性到这个实例的PerformanceCounter。兴趣点
正如你可以看到代码,没有什么真的很特别。唯一有趣的是,它的代码使用一个单一的计时器触发每一个项目。由于这是一个System.Timer.Timer例如,我们使用AsyncOperation的实例,调用适当的线程事件处理程序。{C}历史
这是这种控制的第一个版本。我不知道这是否是值得加强,因为它符合我目前所面对的每一个需要。
有可能被淘汰的一些明显的缺陷,但我肯定不会有足够的时间,这样做的:如果使用的PerformanceCounter是其最大的价值是不固定的,但还没有办法显示图表。最低属性是尚未实现。图像不适合,如果您使用BorderSides的财产。这不是真的有必要,但它会更好看。有没有ToolBoxBitmap,但说实话,我不知道如何添加StatusStrip框下来的下降,使显示它。AutoSizeText财产是一个临时的,因为我还没有发现任何格式的字符串,储备字符串的空间,而不显示数字。... ...当然也有一些更多的必需品,不履行... ...

回答

评论会员: 时间:2