Hi Terry_1314,
You can use GDI to make the Winform DataGridView look better. But if you want advanced beautify, you'd better choose WPF.
Please look at this beautified DataGridView.

Here is the code of that DataGridView. The sample override the OnCellPainting method to change the color of the header cell.
public class MyDataGridView : DataGridView
{
private Color headerCellBackColor1;
private Color headerCellBackColor2;
private Color headerCellMouseOnColor1;
private Color headerCellMouseOnColor2;
private int currentOverColumn;
private int currentOverRow;
private int totalColumnWidth;
private int totalRowHeight;
public MyDataGridView()
{
headerCellBackColor1 = Color.FromArgb(198, 226, 255);
headerCellBackColor2 = Color.FromArgb(141, 182, 205);
headerCellMouseOnColor1 = Color.FromArgb(159, 182, 205);
headerCellMouseOnColor2 = Color.FromArgb(185, 211, 238);
this.ColumnHeadersHeight = 50;
}
protected override void OnCellPainting(DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 || e.ColumnIndex == -1)
{
if (e.ColumnIndex == this.Columns.Count - 1 || e.RowIndex == this.Rows.Count - 1)
{
totalColumnWidth = e.CellBounds.X + e.CellBounds.Width;
totalRowHeight = e.CellBounds.Y + e.CellBounds.Height;
}
if (e.RowIndex == currentOverRow && e.ColumnIndex == currentOverColumn)
{
FillRectangleColor(e.Graphics, headerCellMouseOnColor1, headerCellMouseOnColor2, e.CellBounds);
e.PaintContent(e.CellBounds);
e.Handled = true;
}
else
{
FillRectangleColor(e.Graphics, headerCellBackColor1, headerCellBackColor2, e.CellBounds);
e.PaintContent(e.CellBounds);
e.Handled = true;
}
}
base.OnCellPainting(e);
}
protected override void OnCellMouseMove(DataGridViewCellMouseEventArgs e)
{
currentOverColumn = e.ColumnIndex;
currentOverRow = e.RowIndex;
base.OnCellMouseMove(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (e.X <= 0 || e.Y <= 0 || e.X >= totalColumnWidth || e.Y >= totalRowHeight)
{
currentOverColumn = 0;
currentOverRow = 0;
}
base.OnMouseMove(e);
}
private void FillRectangleColor(Graphics graphics, Color color1, Color color2, Rectangle rec)
{
LinearGradientBrush brush = new LinearGradientBrush(rec, color1, color2, LinearGradientMode.ForwardDiagonal);
graphics.FillRectangle(brush, rec);
}
}
You can download the whole sample from my skydrive.
http://cid-380a93ce0876cf8b.skydrive.live.com/self.aspx/Microsoft%20MSDN%20Work/Solution%20Code/DataGridView%7C_GDI.rar
Sincerely,
Kira Qian
Please mark the replies as answers if they help and unmark if they don't.