protected override void OnDrawItem(DrawItemEventArgs e) { if (e.Index < 0 || e.Index >= Items.Count) { base.OnDrawItem(e); return; } e.DrawBackground(); Rectangle rect = GetItemRectangle(e.Index); if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) { PaintHelper.DrawHoverBackgroundFlat(e.Graphics, rect, SystemColors.Highlight); } else { e.Graphics.DrawLine(SystemPens.ControlLight, rect.Left + 2, rect.Bottom - 1, rect.Right - 2, rect.Bottom - 1); } if (Owner != null) { var item = Items[e.Index]; if (item is ListItem <T> ) { Owner.DrawListItem(e, rect, (ListItem <T>)item); } } }
protected override void OnDrawItem(DrawItemEventArgs e) { if (e.Index < 0 || e.Index >= Items.Count) { base.OnDrawItem(e); return; } e.DrawBackground(); Rectangle rect = GetItemRectangle(e.Index); Brush brushFore; if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) { brushFore = SystemBrushes.HighlightText; PaintHelper.DrawHoverBackgroundFlat(e.Graphics, rect, SystemColors.Highlight); } else { brushFore = SystemBrushes.WindowText; e.Graphics.DrawLine(SystemPens.ControlLight, rect.Left + 2, rect.Bottom - 1, rect.Right - 2, rect.Bottom - 1); } var lt = (ListItem <string>)Items[e.Index]; rect.Inflate(-1, -1); // draw icon Image image = lt.Image; if (image != null) { Rectangle rectImage = new Rectangle(rect.Left + 2, rect.Y + (rect.Height - 16) / 2, 16, 16); e.Graphics.DrawImage(image, rectImage, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel); } rect.X += 20; rect.Width -= 20; // draw text StringFormat sf = new StringFormat(PaintHelper.SFLeft); sf.FormatFlags |= StringFormatFlags.NoWrap; Font font = Font; string str = lt.Text; e.Graphics.DrawString(str, font, brushFore, rect, sf); }