protected virtual void DrawListViewGroupHeader (Graphics dc, ListView control, ListViewGroup group)
{
Rectangle text_bounds = group.HeaderBounds;
Rectangle header_bounds = group.HeaderBounds;
text_bounds.Offset (8, 0);
text_bounds.Inflate (-8, 0);
int text_height = control.Font.Height + 2; // add a tiny padding between the text and the group line
Font font = new Font (control.Font, control.Font.Style | FontStyle.Bold);
Brush brush = new LinearGradientBrush (new Point (header_bounds.Left, 0), new Point (header_bounds.Left + ListViewGroupLineWidth, 0),
SystemColors.Desktop, Color.White);
Pen pen = new Pen (brush);
StringFormat sformat = new StringFormat ();
switch (group.HeaderAlignment) {
case HorizontalAlignment.Left:
sformat.Alignment = StringAlignment.Near;
break;
case HorizontalAlignment.Center:
sformat.Alignment = StringAlignment.Center;
break;
case HorizontalAlignment.Right:
sformat.Alignment = StringAlignment.Far;
break;
}
sformat.LineAlignment = StringAlignment.Near;
dc.DrawString (group.Header, font, SystemBrushes.ControlText, text_bounds, sformat);
dc.DrawLine (pen, header_bounds.Left, header_bounds.Top + text_height, header_bounds.Left + ListViewGroupLineWidth,
header_bounds.Top + text_height);
sformat.Dispose ();
font.Dispose ();
pen.Dispose ();
brush.Dispose ();
}