protected virtual void DrawListViewSubItem (Graphics dc, ListView control, ListViewItem item, int index)
{
ListViewItem.ListViewSubItem subItem = item.SubItems [index];
ColumnHeader col = control.Columns [index];
StringFormat format = new StringFormat ();
format.Alignment = col.Format.Alignment;
format.LineAlignment = StringAlignment.Center;
format.FormatFlags = StringFormatFlags.NoWrap;
format.Trimming = StringTrimming.EllipsisCharacter;
Rectangle sub_item_rect = subItem.Bounds;
Rectangle sub_item_text_rect = sub_item_rect;
sub_item_text_rect.X += 3;
sub_item_text_rect.Width -= ListViewItemPaddingWidth;
SolidBrush sub_item_back_br = null;
SolidBrush sub_item_fore_br = null;
Font sub_item_font = null;
if (item.UseItemStyleForSubItems) {
sub_item_back_br = ResPool.GetSolidBrush (item.BackColor);
sub_item_fore_br = ResPool.GetSolidBrush (item.ForeColor);
// Hot tracking for subitems only applies when UseStyle is true
if (control.HotTracking && item.Hot)
sub_item_font = item.HotFont;
else
sub_item_font = item.Font;
} else {
sub_item_back_br = ResPool.GetSolidBrush (subItem.BackColor);
sub_item_fore_br = ResPool.GetSolidBrush (subItem.ForeColor);
sub_item_font = subItem.Font;
}
if (item.Selected && (control.Focused || !control.HideSelection) && control.FullRowSelect) {
Brush bg, text;
if (control.Focused) {
bg = SystemBrushes.Highlight;
text = SystemBrushes.HighlightText;
} else {
bg = SystemBrushes.Control;
text = sub_item_fore_br;
}
dc.FillRectangle (bg, sub_item_rect);
if (subItem.Text != null && subItem.Text.Length > 0)
dc.DrawString (subItem.Text, sub_item_font,
text, sub_item_text_rect, format);
} else {
dc.FillRectangle (sub_item_back_br, sub_item_rect);
if (subItem.Text != null && subItem.Text.Length > 0)
dc.DrawString (subItem.Text, sub_item_font,
sub_item_fore_br,
sub_item_text_rect, format);
}
format.Dispose ();
}