今天做了個小東西,需要定制combobox的下拉框,打開下拉框時如下圖。
選擇一個後,如下圖。
實現的方法是需要把combobox的DrawoMode設置成OwnerDrawVariable,然後處理DrawItem事件,詳見ComboBox.DrawItem Event (System.Windows.Forms)代碼如下:
1 private void cb_Risk_DrawItem(object sender, DrawItemEventArgs e)
2 {
3 if (e.Index < 0) return;
4
5 switch (e.Index)
6 {
7 case 0:
8 e.Graphics.FillRectangle(Brushes.Red, e.Bounds);
9 break;
10 case 1:
11 e.Graphics.FillRectangle(Brushes.Yellow, e.Bounds);
12 break;
13 case 2:
14 e.Graphics.FillRectangle(Brushes.Blue, e.Bounds);
15 break;
16 default:
17 break;
18 }
19 e.Graphics.DrawString(cb_Risk.Items[e.Index].ToString(), cb_Risk.Font, Brushes.Black, (RectangleF)e.Bounds);
20 }
對了,我這裡的代碼都是用CopySourceAsHtml這個VS的addin粘進來的,對於VS2010,這篇文章CopyAsHtml in Visual Studio 2010 - AppliSec有一個workaround。