我在winform中使用windows progressbar。它的最小值是20,最大值是120.我必须在进度条中为值= 60设置阈值,这样如果值保持在60以下,那么如果值大于60则进度条颜色将为红色,则进度条颜色应为绿色。 最重要的是,我希望将此阈值显示为progessbar中的一条线,无论可能是进度条绿色还是红色,都应该是可见的。 有人有想法吗?我们将非常感谢您的帮助。
答案 0 :(得分:1)
你可以尝试这个(但你不会得到动画)。
它是this answer的修改版本,添加了阈值功能。
public class NewProgressBar : ProgressBar
{
//This property takes the Threshold.
public int Threshold{ get; set; }
public NewProgressBar()
{
this.SetStyle(ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs e)
{
Rectangle rec = e.ClipRectangle;
rec.Width = (int)(rec.Width * ((double)Value / Maximum)) - 4;
if(ProgressBarRenderer.IsSupported)
ProgressBarRenderer.DrawHorizontalBar(e.Graphics, e.ClipRectangle);
rec.Height = rec.Height - 4;
//Check value is greater that Threshold
if(this.Value > Threshold)
{
e.Graphics.FillRectangle(Brushes.Green, 2, 2, rec.Width, rec.Height);
}
else
{
e.Graphics.FillRectangle(Brushes.Red, 2, 2, rec.Width, rec.Height);
}
//This line should do that
e.Graphics.DrawLine(Pens.Black,Threshold-1,2,Threshold-1,rec.Height);
}
}
现在您可以像这样使用它:
NewProgressBar p = new NewProgressBar();
//Set properties
//Set threshold
p.Threshold = 60;
答案 1 :(得分:0)
使用默认的ProgressBar实现,您将无法完全实现所需。您需要创建自定义控件。
如果您只想更改颜色,可以通过在百分比值更改时更改ForeColor属性来实现。