winform 修改进度条颜色

常规情况下,WinForm中这个进度条控件(ProgressBar)无法通过设计器中的属性修改颜色,也无法在代码中直接设置某属性进行修改。

网上找到了一个方法:https://stackoverflow.com/questions/778678/how-to-change-the-color-of-progressbar-in-c-sharp-net-3-5

用自定义的一个类,继承C#的进度条类,最后画矩形的时候用灰色填充(最后一行):

/// <summary>
/// 本项目定制的进度条(灰色)
/// </summary>
public class AimProgressBar : ProgressBar
{
    public AimProgressBar()
    {
        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.Gray, 2, 2, rec.Width, rec.Height);
    }
}


调用:

先在设计器中放一个panel, 然后在代码中新建一个定制进度条之后,把它放进panel即可:

AimProgressBar progress10P = new AimProgressBar();
progress10P.Minimum = 0;
progress10P.Maximum = 10;
progress10P.Step = 1;
progress10P.Value = 0;
 
panelProgress10P.Controls.Add(progress10P);
progress10P.Dock = DockStyle.Fill;


效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值