如何更改datagridview列分隔符颜色c#winforms

时间:2018-06-05 05:53:20

标签: c# winforms datagridview

首先我尝试更改dataGridView1.BackgroundColor,dataGridView1.GridColor但没有工作..然后我尝试了dataGridView1.EnableHeadersVisualStyles = false dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.White但是没有任何对我有用..

screenshot

1 个答案:

答案 0 :(得分:3)

您需要处理CellPainting事件并使用所需颜色填充背景,例如与GridColor相同的颜色,然后通过将绘画区域限制为除分隔符之外的矩形来执行剩余的绘制:

private void DataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.RowIndex == -1)
    {
        var dgv = (DataGridView)sender;
        var r = e.CellBounds;
        var w = 0;
        if (e.ColumnIndex > -1)
        {
            w = dgv.Columns[e.ColumnIndex].DividerWidth;
            r.Width = r.Width - w;
        }
        e.Graphics.SetClip(r);
        e.Paint(r, DataGridViewPaintParts.All);
        e.Graphics.SetClip(e.CellBounds);
        if (w > 0)
        {
            r = new Rectangle(r.Right - 1, r.Top, w + 1, r.Height);
            using (var brush = new SolidBrush(dgv.GridColor))
                e.Graphics.FillRectangle(brush, r);
        }
        e.Handled = true;
    }
}

例如,如果您将列的DividerWidth设置为10并将GridColor设置为Color.Red,则可以使用以上代码获得以下结果:

enter image description here