衆所周知,cbo1.ForeColor會同時改變cbo1.Text和下拉選項字體顏色。字體
獨立繪製下拉選項字體顏色,ForeColor 只對 cbo1.Text 顏色有效的辦法,示例:this
private void cb7_DrawItem(object sender, DrawItemEventArgs e) { DrawCboItems(sender, e); } private void cb7_SelectedIndexChanged(object sender, EventArgs e) { SetCboTextColor(sender); } private void SetCboTextColor(object sender) { ComboBox cbx = sender as ComboBox; if (cbx.Text == "+") cbx.ForeColor = Color.Red; else cbx.ForeColor = Color.Black; } private void DrawCboItems(object sender, DrawItemEventArgs e) { ComboBox cbo = sender as ComboBox; //初始化字體和背景色 Pen fColor = new Pen(Color.Black); Pen bColor = new Pen(Color.White); switch (e.Index) {
//下拉選項的索引 case 1: { fColor = new Pen(Color.Red); break; } } e.Graphics.FillRectangle(bColor.Brush, e.Bounds); e.Graphics.DrawString((string)cbo.Items[e.Index], this.Font, fColor.Brush, e.Bounds); }