You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更改DataGridView背景颜色/单元格颜色

当然没问题!完全可以把DataGridView的白色背景改成你想要的颜色,完美适配你的主题风格~我给你分享几个实用的方法:

方法一:可视化属性设置(适合快速调整)

如果你用Visual Studio这类IDE开发,直接在设计视图选中你的DataGridView,打开右侧属性面板,找到这些关键属性调整就行:

  • BackgroundColor:修改整个控件的背景底色(就是你现在看到的白色区域)
  • ForeColor:设置单元格内文字的颜色
  • GridColor:调整网格线的颜色
  • ColumnHeadersDefaultCellStyle.BackColor:更改列标题栏的背景色
  • RowHeadersDefaultCellStyle.BackColor:更改行标题栏的背景色
    直接在颜色选择器里挑你主题对应的颜色,所见即所得,非常方便!
方法二:代码动态设置(适合运行时调整或批量配置)

如果需要在程序运行时切换颜色,或者要给多个DataGridView统一设置样式,用代码会更灵活。这里给你C#和VB.NET的示例:

C# 示例代码

// 整体控件背景色
dataGridView1.BackColor = Color.FromArgb(30, 30, 30); // 深灰色示例,可替换成你的主题色
// 单元格文字颜色
dataGridView1.ForeColor = Color.White;
// 网格线颜色
dataGridView1.GridColor = Color.DimGray;
// 列标题样式
dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(50, 50, 50);
dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
// 行标题样式
dataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.FromArgb(50, 50, 50);
dataGridView1.RowHeadersDefaultCellStyle.ForeColor = Color.White;
// 普通单元格默认样式
dataGridView1.DefaultCellStyle.BackColor = Color.FromArgb(30, 30, 30);
dataGridView1.DefaultCellStyle.ForeColor = Color.White;
// 选中行的高亮样式(可选)
dataGridView1.RowsDefaultCellStyle.SelectionBackColor = Color.FromArgb(70, 70, 70);
dataGridView1.RowsDefaultCellStyle.SelectionForeColor = Color.White;

VB.NET 示例代码

' 整体控件背景色
DataGridView1.BackColor = Color.FromArgb(30, 30, 30)
' 单元格文字颜色
DataGridView1.ForeColor = Color.White
' 其他属性设置逻辑和C#一致,语法稍作调整即可
方法三:自定义绘制(适合个性化复杂需求)

如果想要渐变背景、特殊边框这类更定制化的效果,可以利用CellPainting事件自己绘制单元格:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    // 跳过列标题和行标题的处理(如果不需要特殊样式可删除此判断)
    if (e.RowIndex < 0 || e.ColumnIndex < 0)
        return;

    // 创建渐变背景画刷
    using (LinearGradientBrush brush = new LinearGradientBrush(e.CellBounds, 
        Color.FromArgb(30,30,30), Color.FromArgb(40,40,40), LinearGradientMode.Vertical))
    {
        e.Graphics.FillRectangle(brush, e.CellBounds);
        // 绘制单元格内的文字、图标等内容
        e.PaintContent(e.CellBounds);
        // 标记为已处理,避免默认绘制覆盖
        e.Handled = true;
    }
}

记得要在设计视图里把这个事件绑定到你的DataGridView上哦!

小提醒:如果你的项目用了第三方皮肤或主题控件,可能需要确认这些自定义设置是否会被皮肤覆盖,一般直接设置的样式优先级会更高~

内容的提问来源于stack exchange,提问作者jbegic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:50:35