一尘不染

如何在C#.NET 3.5中更改Progressbar的颜色?

c#

我想在进度栏上做两件事。

  1. 将绿色更改为红色。
  2. 卸下砖块,使其成为一种颜色。

我不知道如何完成有关这两件事的任何信息,我们将不胜感激!

谢谢。


阅读 623

收藏
2020-05-19

共1个答案

一尘不染

由于先前的答案似乎不适用于“视觉样式”。您可能需要创建自己的类或扩展进度栏:

public class NewProgressBar : ProgressBar
{
    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;
        e.Graphics.FillRectangle(Brushes.Red, 2, 2, rec.Width, rec.Height);
    }
}

编辑:更新的代码以使进度条使用背景的视觉样式

2020-05-19