protected virtual void OnDrawSubItem(DrawSubItemEventArgs e) { object value = this.GetItemAt(e.Index, e.SubIndex); if (DrawMode == DrawMode.Normal && Items.Count > 0) { if ((value as Image) != null) { e.Graphics.DrawImageUnscaled((Image)value, e.Bounds); } else if ((value as Bitmap) != null) { IntPtr hBmp = ((Bitmap)value).GetHbitmap(); e.Graphics.DrawImageUnscaled(Image.FromHbitmap(hBmp), e.Bounds); WinAPI.DeleteObject(hBmp); } else if ((value as byte[]) != null) { try { e.Graphics.DrawImageUnscaled(Image.FromStream(new MemoryStream((byte[])value)), e.Bounds); } catch (Exception ex) { defaultDraw(value, e); } } else { defaultDraw(value, e); } } else if (DrawSubItem.GetInvocationList() != null) { DrawSubItem.DynamicInvoke(new object[] { this, e }); } }
//Protected Methods protected virtual void defaultDraw(object value, DrawSubItemEventArgs e) { e.Graphics.DrawString(value.ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds); }