2013-08-21 75 views
1

我想有一個ListBox控件包含跨越多行的項目。ListBox項可以跨越多行嗎? C#

基本上我想要的是每個項目跨越多行並可作爲一個項目選擇。有沒有辦法做到這一點?

+2

使用DrawMode = OwnerDrawVariable和DRAWITEM和MeasureItem事件。是的,你現在必須自己畫畫。 – LarsTech

+0

http://stackoverflow.com/questions/1673963/multi-line-list-items-on-winforms-listview-control – Habib

+0

這是http://stackoverflow.com/q/9532368/941243可能的副本。 – Chris

回答

5

正如LarsTech在他的評論中所建議的,所有其他評論導致某種完全編碼的例子,這可能會讓你感到困惑。我做這個演示用的代碼只是一些線條爲你跟蹤和輕鬆上手:

listBox1.DrawMode = DrawMode.OwnerDrawVariable; 
//First add some items to your listBox1.Items  
//MeasureItem event handler for your ListBox 
private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e) 
{ 
    if (e.Index == 2) e.ItemHeight = 50;//Set the Height of the item at index 2 to 50 
} 
//DrawItem event handler for your ListBox 
private void listBox1_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    e.DrawBackground(); 
    e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds); 
} 

enter image description here

+0

這很好,但它沒有顯示如何將事件綁定到列表框。我在這裏找到一個例子,它顯示了它。 http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.measureitem.aspx – CPS

+0

@CPS註冊事件只是一個非常開始的工作,我以爲你已經知道這一點。 –

+0

我知道他們需要,但我不知道我特別需要的事件的名稱。爲了完整起見,我包含了該鏈接,以便任何有此問題的人都能得到完整的答案。 – CPS