我想获取DataGridView标题单元格的背景颜色,我已经完成了一个技巧,但它给了我空的RGB = 0,0,0
我试过这段代码:
Color cl = dataGridView1.Columns["<Column>"].HeaderCell.Style.BackColor; //<AnyColumn>
我必须在重新绘制尺寸修改之前重新绘制与其相同颜色的Header Cell背景。
请建议一个解决方案,我已经搜索了很多但没有有用的帮助
答案 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;