C#修改ProgressBar控件 [自定义控件修改]
程序员文章站
2022-07-13 17:13:57
...
我们有时候需要修改一些.NET内置控件来匹配我们项目的风格,这里以修改ProgressBar为示例,说明一下几个关键点。
目标:我们只要修改进度条的颜色(用控件的前景色);其他功能保持原控件的功能就可以了
主要内容:我们主要做的内容就是在重写OnPaint()事件,重绘进度条(用到前景色设置和进度条的Value属性)
关键点:需要用SetStyle()来把控件的模式设为UserPaint来让我们自定义绘制生效
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace NewProgressBar
{
//继承于内置的ProgressBar,然后保持绝大多数功能而只修改部分属性
public class NewProgressBar: System.Windows.Forms.ProgressBar
{
//修改属性来让自定义绘制生效
public NProgressBar()
{
this.SetStyle(ControlStyles.UserPaint, true);//必须设置为UserPaint,自定义才起作用
}
//我们要做的主要就是重写OnPaint()事件
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(new SolidBrush(this.ForeColor), 2, 2, rec.Width, rec.Height);//用前景色绘制进度条进度
}
}
}
示例比较简单,希望给大家有一些帮助。
上一篇: SQL语句中,自定义变量的妙用
下一篇: Windows下初次尝试InfluxDB