protected virtual void PaintFlatControlBorder(Graphics g) { int pw = 1; Color c1 = Color.Empty, c2 = Color.Empty, cb = Color.Empty, cText = Color.Empty; c1 = Enabled ? ThemeManager.GradientNormalColor1 : ThemeManager.BackColor; c2 = Enabled ? ThemeManager.GradientNormalColor2 : ThemeManager.BackColor; cb = Enabled ? ThemeManager.BorderColor : ThemeManager.GradientNormalColor2; cText = Enabled ? ThemeManager.ForeColor : Color.FromKnownColor(KnownColor.ControlDark); if (Enabled && (_isHovered || Focused)) { if (_isHovered && Focused) { c1 = ThemeManager.GradientFocusHoverColor1; c2 = ThemeManager.GradientFocusHoverColor2; cb = ThemeManager.FocusBorderColor; //pw = 2; } else if (Focused) { c1 = ThemeManager.GradientFocusColor1; c2 = ThemeManager.GradientFocusColor2; cb = ThemeManager.FocusBorderColor; //pw = 2; } else { c1 = ThemeManager.GradientHoverColor1; c2 = ThemeManager.GradientHoverColor2; cText = ThemeManager.SelectedTextColor; } } if (_overrideForeColor != Color.Empty) { cText = _overrideForeColor; } Rectangle rc = ClientRectangle; rc.Inflate(2, 2); using (Brush b = new SolidBrush(ThemeManager.BackColor)) { g.FillRectangle(b, rc); } rc = ClientRectangle; rc.Width -= 1; rc.Height -= 1; using (Pen p = new Pen(cb, pw)) using (Brush b = new LinearGradientBrush(rc, c1, c2, 90)) { g.FillRectangle(b, rc); g.DrawRectangle(p, rc); } rc = new Rectangle(ClientRectangle.Left + 2, ClientRectangle.Top + 2, ClientRectangle.Width - 6, ClientRectangle.Height - 6); Rectangle rcText = new Rectangle(rc.Left, rc.Top, rc.Width - 12, rc.Height); Rectangle rcArrow = new Rectangle(rcText.Right, rc.Top, 12, rc.Height); Image img = null; ComboBoxItem item = this.SelectedItem as ComboBoxItem; if (item != null) { img = item.Image; } using (Brush b = new SolidBrush(cText)) { StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; sf.Trimming = StringTrimming.EllipsisCharacter; //sf.FormatFlags = StringFormatFlags.NoWrap; string text = SelectedItem.GetFieldValueAsText(DisplayMember); if (img != null) { g.DrawImage(img, rcText.X + 2, rcText.Top, 16, 16); rcText.X += 20; rcText.Width -= 20; } g.DrawString(text, this.Font, b, rcText, sf); } using (GraphicsPath gp = ImageProcessing.GenerateCenteredArrow(rcArrow)) using (Brush b = new SolidBrush(cText)) using (Pen p = new Pen(b, 1)) { g.FillPath(b, gp); g.DrawPath(p, gp); } }