C# ListBox實(shí)現(xiàn)Item項(xiàng)顯示多行
“如何讓ListBox的Item項(xiàng)顯示多行?”,貌似沒(méi)有人給出直接的答案。現(xiàn)在將一點(diǎn)個(gè)人C# ListBox經(jīng)驗(yàn)總結(jié)如下:
1、首先選中拖至面板的ListBox控件,點(diǎn)屬性,選中DrawMode,改成OwnerDrawFixed或OwnerDrawVariable
2、還是在屬性工具中,切換到事件(就是那個(gè)閃電圖標(biāo)),鼠標(biāo)雙擊‘行為’菜單下的DrawItem,添加一個(gè)事件。
3、在‘窗體設(shè)計(jì)器生成的代碼’中就添加了一個(gè)新的事件
this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
4、學(xué)過(guò)的朋友應(yīng)該知道,這時(shí)代碼里會(huì)有一個(gè) listBox1_DrawItem()的方法,在里面寫(xiě)代碼吧。
- private void listBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
- {
- e.DrawBackground();
- Brush myBrush = Brushes.Black; //初始化字體顏色=黑色
- this.listBox1.ItemHeight=90; //設(shè)置項(xiàng)高,根據(jù)具體需要設(shè)置值
- //為每個(gè)項(xiàng)設(shè)置字體顏色
- //如果不需要可以不寫(xiě)此switch
- switch (e.Index)
- {
- case 0:
- myBrush = Brushes.Red;
- break;
- case 1:
- myBrush = Brushes.Orange;
- break;
- case 2:
- myBrush = Brushes.Purple;
- break;
- case 4:
- myBrush = Brushes.White;
- break;
- }
- e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush,e.Bounds,null);
- //這句好象可以不要,自己試下
- e.DrawFocusRectangle();
- }
其實(shí),看過(guò)MSDN的朋友應(yīng)該知道了,MSDN里有類(lèi)似的代碼,我不過(guò)修改了幾個(gè)地方,加入了項(xiàng)高this.listBox1.ItemHeight=90,可以輸入多行字符,這里要注意的是,整個(gè)ListBox的高應(yīng)該是你設(shè)置的Item項(xiàng)高的倍數(shù)大一點(diǎn)點(diǎn),不然ListBox在顯示時(shí)會(huì)有所變形!(例如:我的Item項(xiàng)高是60,而ListBox要一次顯示三項(xiàng),所以設(shè)置為184)
以上就是關(guān)于C# ListBox控件重繪Item項(xiàng)的方法。
【編輯推薦】