废话少说,上源码:
public void cbDrawItem(object sender, DrawItemEventArgs e)
{
//匿名方法
Func<Color> SetBackColor = () =>
{
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
return Color.Lime; //高亮背景色
}
return e.BackColor;
};
if (e.Index < 0)
{
return;
}
var cb = sender as ComboBox;
if (cb != null)
{
//e.DrawBackground(); 反编译System.Windows.Forms.dll,得知DrawBackground的方法源码如下
var brush = new SolidBrush(SetBackColor());
e.Graphics.FillRectangle(brush, e.Bounds);
brush.Dispose();
var item = cb.Items[e.Index] as SearchItem;
var sb = new SolidBrush(Color.Blue);
if (sb != null)
{
e.Graphics.DrawString(item.Text, e.Font, sb, e.Bounds.X, e.Bounds.Y + 2); //选项前景色
}
e.DrawFocusRectangle();
}
}