WinForm中如何修改CheckBox控件勾选框的背景颜色
关于WinForm中自定义CheckBox勾选方框背景色的实现方案
在WinForm开发中完全可以修改CheckBox控件承载勾选标记的方框背景色,且不需要依赖第三方组件,以下是两种常用的落地方法:
方案1:使用原生Flat样式属性快速设置(无需自定义控件)
这种方法操作最简单,适合基础定制需求:
- 将CheckBox控件的
FlatStyle属性设置为FlatStyle.Flat - 直接修改
FlatAppearance.CheckBoxBackColor属性为你需要的背景色即可,该属性控制的就是承载勾选标记的方框的背景色,不会影响勾选标记本身的显示颜色 - 如果需要调整方框边框样式,还可以配套修改
FlatAppearance.BorderColor、FlatAppearance.BorderSize属性
示例代码(窗体加载时赋值):
checkBox1.FlatStyle = FlatStyle.Flat; // 设置勾选方框的背景色为浅蓝 checkBox1.FlatAppearance.CheckBoxBackColor = Color.LightBlue; // 可选:设置方框边框颜色为灰色 checkBox1.FlatAppearance.BorderColor = Color.Gray;
方案2:自定义CheckBox控件重绘(高度灵活)
如果需要更复杂的样式定制,比如圆角方框、渐变背景等,可以通过继承CheckBox重写OnPaint方法实现:
- 新建自定义类继承自CheckBox控件
- 添加自定义属性
BoxBackColor专门用于控制方框背景色 - 重写
OnPaint方法,自行绘制方框背景、边框、勾选标记
示例代码:
public class CustomCheckBox : CheckBox { // 自定义方框背景色属性 public Color BoxBackColor { get; set; } = Color.White; public CustomCheckBox() { // 开启用户自绘、消除绘制闪烁 this.SetStyle(ControlStyles.UserPaint, true); this.DoubleBuffered = true; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.Clear(this.BackColor); // 绘制控件文本 e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), 18, 1); // 绘制方框背景(可自定义为纯色、渐变等任意效果) Rectangle boxRect = new Rectangle(0, 1, 14, 14); e.Graphics.FillRectangle(new SolidBrush(BoxBackColor), boxRect); // 绘制方框边框 e.Graphics.DrawRectangle(new Pen(Color.Gray, 1), boxRect); // 勾选状态时绘制勾选标记,颜色可单独设置,不会和背景色冲突 if (this.Checked) { e.Graphics.DrawString("✓", new Font("Arial", 10, FontStyle.Bold), new SolidBrush(this.ForeColor), 0, 0); } } }
编译项目后即可在工具箱中直接使用这个CustomCheckBox控件,修改BoxBackColor属性即可调整方框背景色。
内容的提问来源于stack exchange,提问作者Lightsout
相关产品推荐
相关产品推荐

