DataGridView标题单元格背景颜色

时间:2014-02-04 06:19:56

标签: c# datagridview colors paint

我想获取DataGridView标题单元格的背景颜色,我已经完成了一个技巧,但它给了我空的RGB = 0,0,0

我试过这段代码:

 Color cl = dataGridView1.Columns["<Column>"].HeaderCell.Style.BackColor; //<AnyColumn>

我必须在重新绘制尺寸修改之前重新绘制与其相同颜色的Header Cell背景。

请建议一个解决方案,我已经搜索了很多但没有有用的帮助

3 个答案:

答案 0 :(得分:3)

DataGridView使用样式继承,因此除非单个标题单元格与默认标题不同,否则其BackColor将设置为Color.Empty

请尝试使用ColumnHeadersDefaultCellStyle.BackColor属性。

请注意,当EnableHeadersVisualStyles设置为true(默认值)时,将忽略该值,并使用视觉样式渲染器绘制标题。

答案 1 :(得分:2)

经过一番努力,我终于写下了一些建议的代码 它是一个通用代码,可以在任何Grid的C#WinForm的Paint方法中调用,传递Grid,Columns的名称和paint Graphics对象

我添加了一个大小为4的填充矩形,从前一列的Right-2到Next Column的Left + 2开始,所以它隐藏了Vertical Bar

Public Sub VerticalBarHide(ByVal grd As KryptonExtendedGrid, ByVal colname As String(), ByVal e As System.Drawing.Graphics)
    Dim rectHeader As Rectangle
    grd.EnableHeadersVisualStyles = False
    Dim bgColor As Color
    bgColor = grd.ColumnHeadersDefaultCellStyle.BackColor
    For Each name As String In colname
        rectHeader = grd.GetCellDisplayRectangle(grd.Columns(name).Index, -1, True)
        rectHeader.X = rectHeader.X + rectHeader.Width - 2
        rectHeader.Y += 1
        rectHeader.Width = 2 * 2
        rectHeader.Height -= 2
        e.FillRectangle(New SolidBrush(bgColor), rectHeader)
    Next

End Sub

答案 2 :(得分:1)

我发现这很好用。您需要设置EnableHeadersVisualStyles=fasle; 我已经测试了两种方式:

dataGridView1.EnableHeadersVisualStyles = false;

DataGridViewColumn dataGridViewColumn = dataGridView1.Columns["Column1"];
dataGridViewColumn.HeaderCell.Style.BackColor = Color.Magenta;
dataGridViewColumn.HeaderCell.Style.ForeColor = Color.Yellow;

Color cl = dataGridViewColumn.HeaderCell.Style.BackColor;
//or   
Color cl2 = dataGridView1.Columns["Column1"].HeaderCell.Style.BackColor;