DatGridView 标题单元格的背景色



我想获得datagridview标头单元的背景颜色,我做了一个技巧,但它给了我空,rgb = 0,0,0,0

我尝试了此代码:

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

我必须重新粉刷标头单元的背景,具有与大小修改之前重新粉刷之前相同的颜色的背景。

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

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

改用ColumnHeadersDefaultCellStyle.BackColor属性。

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

经过一些努力,我终于写下了一些建议它是一个通用代码,可以通过任何网格的c#winform的油漆方法调用,将其传递给网格,列的名称和油漆图形对象

我添加了一个尺寸4的填充矩形,该矩形从上一列的右2到下一列的左 2,因此隐藏了垂直条

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

我发现它运行良好。您需要设置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;

最新更新