Contents

今天做了个小东西,需要定制combobox的下拉框,打开下拉框时如下图。

选择一个后,如下图。

实现的方法是需要把combobox的DrawoMode设置成OwnerDrawVariable,然后处理DrawItem事件,详见ComboBox.DrawItem Event (System.Windows.Forms)代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void cb_Risk_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0) return;

switch (e.Index)
{
case 0:
e.Graphics.FillRectangle(Brushes.Red, e.Bounds);
break;
case 1:
e.Graphics.FillRectangle(Brushes.Yellow, e.Bounds);
break;
case 2:
e.Graphics.FillRectangle(Brushes.Blue, e.Bounds);
break;
default:
break;
}
e.Graphics.DrawString(cb_Risk.Items[e.Index].ToString(), cb_Risk.Font, Brushes.Black, (RectangleF)e.Bounds);
}


对了,我这里的代码都是用CopySourceAsHtml这个VS的addin粘进来的,对于VS2010,这篇文章CopyAsHtml in Visual Studio 2010 - AppliSec有一个workaround。




Contents