private void dataGridViewX1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){
if (e.RowIndex >= 0 && e.ColumnIndex>=0)
{
Rectangle newRect = new Rectangle(e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Width - 1, e.CellBounds.Height - 1);
Pen borderPen = new Pen(dataGridViewX1.GridColor,1);//线的颜色
Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor);//非选中的背景色
if (dataGridViewX1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected)
{
//选中的背景色
backColorBrush = new SolidBrush(System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(199)))), ((int)(((byte)(118))))));
}
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);//用背景色填充单元格
if (e.ColumnIndex!=1)
{
//画上边线
e.Graphics.DrawLine(borderPen, e.CellBounds.Left, e.CellBounds.Top - 1, e.CellBounds.Right - 1, e.CellBounds.Top - 1);
//画下边线
e.Graphics.DrawLine(borderPen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);
// 画右边线
e.Graphics.DrawLine(borderPen, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);
//e.PaintBackground(newRect,true);//画背景
//e.Graphics.DrawRectangle(borderPen, newRect);//画边框
}
else
{
if (e.RowIndex == 0)
{
//头
e.Graphics.DrawLine(new Pen(Color.Red, 4), e.CellBounds.Right - 2, (e.CellBounds.Top + e.CellBounds.Bottom) / 2, e.CellBounds.Right - 2, e.CellBounds.Bottom);
e.Graphics.DrawLine(new Pen(Color.Red, 3), e.CellBounds.Right - 8, (e.CellBounds.Top + e.CellBounds.Bottom) / 2, e.CellBounds.Right, (e.CellBounds.Top + e.CellBounds.Bottom) / 2);
}
if (e.RowIndex == 1)
{
//中
e.Graphics.DrawLine(new Pen(Color.Red, 4), e.CellBounds.Right - 2, e.CellBounds.Top, e.CellBounds.Right - 2, e.CellBounds.Bottom + 1);
}
if (e.RowIndex == 2)
{
//尾
e.Graphics.DrawLine(new Pen(Color.Red, 4), e.CellBounds.Right - 2, e.CellBounds.Top, e.CellBounds.Right - 2, (e.CellBounds.Top + e.CellBounds.Bottom) / 2);
e.Graphics.DrawLine(new Pen(Color.Red, 3), e.CellBounds.Right - 8, (e.CellBounds.Top + e.CellBounds.Bottom) / 2, e.CellBounds.Right, (e.CellBounds.Top + e.CellBounds.Bottom) / 2);
//画下边线
e.Graphics.DrawLine(borderPen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);
}
// 画右边线
e.Graphics.DrawLine(borderPen, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);
}
if (e.Value != null)
{
e.PaintContent(newRect);//画内容
}
e.Handled = true;
}
}
效果图:
本文转载至,http://ruantnt.blog.163.com/blog/static/19052545220119185228153/
DataGridView重绘painting简单实例,布布扣,bubuko.com