2011-05-18 49 views
5

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

我的代码是这样的。

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; 
         } 
        } 
       } 
      } 

回答

8


我不知道为什么你需要捕捉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; 
         } 
        } 
       } 
      } 
0

应该

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点将被下一个单元擦除。

相关问题