如何获得一个填充的竖条,就像进度条一样?

时间:2013-12-28 11:30:59

标签: c# winforms sharpdevelop

正如标题所说,我正在尝试获取一个垂直条形并根据值填充它。我找不到任何答案。一个答案建议用类名替换System.Windows.Forms.ProgressBar,但这会使我的设计视图无法使用。我该怎么办?

编辑:我需要一个类似这样的条形图,例如图表报告,显示有多少人在工作总人数中工作。

2 个答案:

答案 0 :(得分:1)

您可以轻松创建垂直进度条控件。在项目中添加一个新类并粘贴下面显示的代码。编译并将新控件从工具箱顶部拖放到表单上。

using System;
using System.Windows.Forms;

class VerticalProgressBar : ProgressBar {
    protected override CreateParams CreateParams {
        get {
            var cp = base.CreateParams;
            cp.Style |= 4;   // Turn on PBS_VERTICAL
            return cp;
        }
    }
}

如果你想要一个更自定义的外观,那么只需从Control派生,添加一个Value属性,并覆盖OnPaint()方法以任意方式绘制它。

答案 1 :(得分:1)

如果您真的想要实现自己的控件,可以在System.Drawing namespace中找到所需的一切。只需使用Rectangle个对象(一帧和一个进度)。通过值属性操作其高度来填充内部进度矩形以显示进度。

如果您不知道如何绘制,请查看以下内容: How to: Create Graphics Objects for Drawing

或者只是使用ProgressBarRenderer类来按照自己的方式操作框架进度条。这个类有一个DrawVerticalBar()成员。在MSDN上,你甚至可以找到一个垂直条的完整示例。

你的观点是什么?“但这会让我的设计视图无法使用......”?男人,没有得到它。如何判断代码中的错误或一般方法?请展示一些东西或者询问一般情况。

在编写.NET应用程序时,MSDN应该是您的首选,您需要一些基本的操作方法信息。