2012-08-09 65 views
3

我想在列表框中有多列。以下是我在應用程序中獲得的圖片的示例。列表框中的多列數據

Picture of a ListBox that does not have multi-columns

我居然有7列,但打印出來只有兩列,使其更容易理解。

因此,第一列將表示date,第二列表示name。正如你所看到的,這些數據並沒有進入他們自己的專欄。

這是我的代碼:

this.listBox1 = new System.Windows.Forms.ListBox(); 
this.SuspendLayout(); 
// 
// listBox1 
// 
this.listBox1.FormattingEnabled = true; 
this.listBox1.HorizontalScrollbar = true; 

foreach (XmlNode xn in xnList) 
{ 
    string date = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "Date").FirstChild.Value; 
    string id = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "ID").FirstChild.Value; 
    if (date == cari) 
    { 
     this.listBox1.Items.AddRange(new object[] {      
     //dateBox.Text, 
     dateBox.Text + "\r\n" + date}); 

     this.listBox1.Items.AddRange(new object[] {      
     "sarabrown"}); 
    } 
} 
this.listBox1.Location = new System.Drawing.Point(12, 28); 
this.listBox1.MultiColumn = true; 
this.listBox1.Name = "listBox1"; 
this.listBox1.ScrollAlwaysVisible = true; 
this.listBox1.Size = new System.Drawing.Size(300, 95); 
this.listBox1.TabIndex = 0; 
this.listBox1.ColumnWidth = 100; 
// 
// Form3 
// 
this.ClientSize = new System.Drawing.Size(400, 273); 
this.Controls.Add(this.listBox1); 
this.Name = "Form3"; 
this.ResumeLayout(false); 

我發現這個代碼there,但它會創建一個列表框,看起來就像如上圖。有沒有人知道這個?

+2

你有反對使用'DataGridView'什麼? – 2012-08-09 04:52:43

+0

你有看這個鏈接嗎? http://www.codeproject.com/Articles/2377/Multi-Column-List-Box-in-C – SMK 2012-08-09 04:56:16

+0

可能重複[C#MultiColumn Listbox](http://stackoverflow.com/questions/8477212/c-sharp -multicolumn-listbox) – nawfal 2013-09-05 06:29:53

回答

4

ListBox的MultiColumn屬性僅有助於避免垂直滾動,因此只會將溢出項目堆疊到下一列中。您的需求在.NET中默認不可用。因此,您可能必須構建自己的自定義控件來支持該控件。

順便說一句,GridView是你的朋友..你需要的是使用GridView輕鬆實現。 對於例如,使其簡單化(您可能需要完全調整,使之適合您的問題)

protected void MyGridView_PreRender(object sender, EventArgs e) 
{ 
DataSet myDataSet = new DataSet(); 
myDataSet.ReadXml(new StringReader(myXmlDoc.OuterXml)); 
GridView gv = (GridView)sender; 
gv.DataSource = myDataSet; 
gv.DataBind(); 
} 

UPDATE:
您可能要檢查的ListView,而不是GridView控件或列表框。
檢查此example出來給你一個想法。
或這個更簡單的:Using ListView control in C#
有了這個,你還可以在複選框等不同列中放置其他控件。
這比GridView相對輕量級。

+0

我試過這個,它說「無法從[,]轉換爲[]」。然後我試圖刪除','並打印出相同的。 – 2012-08-09 05:18:01

+0

@sarabrown:該代碼無法運行,因爲它在.NET中不受支持。 MultiColumn屬性用於上述其他內容(我知道這是誤導性的)。 – Kash 2012-08-09 05:19:50

0

對於MutliColumn在C#ListBox的,這是工作的罰款

listBox1.Items.AddRange(
    new object[] 
    { 
     "Name","Aman" 

    } 
); 
+0

不,這不是多列。給出的示例添加一個值範圍,每行一個。 – 2017-09-22 12:17:20