正如标题所说,我正在尝试获取一个垂直条形并根据值填充它。我找不到任何答案。一个答案建议用类名替换System.Windows.Forms.ProgressBar,但这会使我的设计视图无法使用。我该怎么办?
编辑:我需要一个类似这样的条形图,例如图表报告,显示有多少人在工作总人数中工作。
答案 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应该是您的首选,您需要一些基本的操作方法信息。