我想获得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;