如何仅绘制DataGridView的单元格背景而不是其内容?

我只需要绘制DataGridView单元格的背景而不是它的Content.But,而我正在绘画时它也会绘制其内容。请帮助我。

我的代码是这样的。

private void Daywisegrid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex == 0 ) { using (Brush gridBrush = new SolidBrush(this.Daywisegrid.GridColor)) { using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor)) { using (Pen gridLinePen = new Pen(gridBrush)) { // Clear cell e.Graphics.FillRectangle(backColorBrush, e.CellBounds); //Bottom line drawing e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom-1 , e.CellBounds.Right, e.CellBounds.Bottom-1); e.Handled = true; } } } } 

我不知道为什么你需要捕捉CellPainting事件来改变细胞背景颜色就像这样做

 Daywisegrid.Rows[RowIndex].Cells[columnIndex].Style.BackColor = Color.Red; 

但如果你想在绘画中这样做,试试这个

 private void Daywisegrid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex == 0 ) { using (Brush gridBrush = new SolidBrush(this.Daywisegrid.GridColor)) { using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor)) { using (Pen gridLinePen = new Pen(gridBrush)) { // Clear cell e.Graphics.FillRectangle(backColorBrush, e.CellBounds); //Bottom line drawing e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom-1 , e.CellBounds.Right, e.CellBounds.Bottom-1); // here you force paint of content e.PaintContent( e.ClipBounds ); e.Handled = true; } } } } 

应该

 e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom-1 , e.CellBounds.Right - 1, e.CellBounds.Bottom - 1); 

e.CellBounds.Right, e.CellBounds.Bottom - 1点将被下一个单元格删除。