(原创文章·转载请注明来源:http://blog.csdn.net/hulihui)
在一些窗体应用程序中,常常需要重写组合框控件ComboBox的DrawItem事件处理方法,例如:颜色选择组合框、带图标的组合框、调整项间距的组合框,等等。基本步骤如下:
- 设置ComboBox.DrawMode为OwnerDrawFixed或OwnerDrawVariable;
- 计算新的下拉框高度值ComboBox.DropDownHeight,或许还要计算宽度ComBoBox.DropDownWidth;
- 重写ComboBox.DrawItem和ComboBox.MeasureItem等事件处理方法。
下面是两个主要事件的代码举例:
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index == -1) { return; } // 未下拉的当前框文本, 不需要重绘制 ComboBox thisComboBox = sender as ComboBox; // 当前组合框 string itemText = Convert.ToString(thisComboBox.Items[e.Index]); // 由DrawString()处理null情况 e.DrawBackground(); // 绘制背景 using (SolidBrush brush = new SolidBrush(e.ForeColor)) { e.Graphics.D