C # listView ฉันจะเพิ่มรายการในคอลัมน์ 2, 3 และ 4 ฯลฯ ได้อย่างไร


106

หากต้องการเพิ่มรายการในคอลัมน์ 1 ในlistViewการควบคุมของฉัน( Winform) ฉันใช้listView1.Items.Addงานได้ดี แต่ฉันจะเพิ่มรายการในคอลัมน์ 2 และ 3 ฯลฯ ได้อย่างไร


8
+1: เป็นคำถามที่ดี ส่วนนี้ของการควบคุม ListView มีความสับสนและไม่เข้าใจง่าย บางครั้งฉันคิดว่าพวกเขาเกลียดนักพัฒนา @ MS
Mehdi LAMRANI

1
@ มิกะ: ไม่ใช่เรื่องง่ายที่จะแยกความซับซ้อนของการออกแบบ GUI ที่มีประสิทธิภาพออกไปจากผู้ใช้
Christopher Berman

1
(นั่นฟังดูไม่ค่อยมีคนอุปถัมภ์ในหัวของฉันขอโทษ!)
Christopher Berman

เพิ่มใน subiiems
Ramankingdom

คำตอบ:


134

มีหลายวิธีในการทำ แต่นี่เป็นวิธีแก้ปัญหาเดียว (สำหรับ 4 คอลัมน์)

string[] row1 = { "s1", "s2", "s3" };
listView1.Items.Add("Column1Text").SubItems.AddRange(row1);

และวิธีที่ละเอียดกว่าอยู่ที่นี่:

ListViewItem item1 = new ListViewItem("Something");
item1.SubItems.Add("SubItem1a");
item1.SubItems.Add("SubItem1b");
item1.SubItems.Add("SubItem1c");

ListViewItem item2 = new ListViewItem("Something2");
item2.SubItems.Add("SubItem2a");
item2.SubItems.Add("SubItem2b");
item2.SubItems.Add("SubItem2c");

ListViewItem item3 = new ListViewItem("Something3");
item3.SubItems.Add("SubItem3a");
item3.SubItems.Add("SubItem3b");
item3.SubItems.Add("SubItem3c");

ListView1.Items.AddRange(new ListViewItem[] {item1,item2,item3});

65

คุณสามารถเพิ่มรายการ / รายการย่อยใน ListView เช่น:

ListViewItem item = new ListViewItem(new []{"1","2","3","4"});
listView1.Items.Add(item);

แต่ฉันสงสัยว่าปัญหาของคุณคือกับดูประเภท ตั้งค่าในตัวออกแบบเป็นรายละเอียดหรือทำสิ่งต่อไปนี้ในโค้ด:

listView1.View = View.Details;

2
สิ่งสำคัญมากคือต้องใช้ "listView1.FullRowSelect = true" ... มิฉะนั้นจะคลิกได้เฉพาะคอลัมน์ 1 เท่านั้น ฉันหวังว่าฉันจะรู้เรื่องนี้ก่อนหน้านี้! มันจะช่วยฉันได้มากในการทำงาน
John Henckel

โดยเฉพาะข้อสังเกตเกี่ยวกับ listView1.View ช่วยฉันได้! ขอบคุณ!
Dev.Jaap

7
 private void MainTimesheetForm_Load(object sender, EventArgs e)
        {
            ListViewItem newList = new ListViewItem("1");
            newList.SubItems.Add("2");
            newList.SubItems.Add(DateTime.Now.ToLongTimeString());
            newList.SubItems.Add("3");
            newList.SubItems.Add("4");
            newList.SubItems.Add("5");
            newList.SubItems.Add("6");
            listViewTimeSheet.Items.Add(newList);

        }

7

นี่คือเอกสาร msdn บนวัตถุ listview และวัตถุ listviewItem
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.aspx

ฉันขอแนะนำอย่างน้อยให้คุณใช้เวลาในการอ่านเอกสารเกี่ยวกับวัตถุใด ๆ ที่คุณใช้จาก. net framework แม้ว่าเอกสารจะค่อนข้างแย่ในบางครั้ง แต่ก็ยังคงมีค่าโดยเฉพาะอย่างยิ่งเมื่อคุณเจอสถานการณ์เช่นนี้

แต่อย่างที่ James Atkinson กล่าวว่ามันเป็นเพียงเรื่องของการเพิ่มรายการย่อยใน listviewitem ดังนี้:

ListViewItem i = new ListViewItem("column1");
i.SubItems.Add("column2");
i.SubItems.Add("column3");

4

สำหรับปัญหาของคุณให้ใช้ดังนี้:

ListViewItem row = new ListViewItem(); 
row.SubItems.Add(value.ToString()); 
listview1.Items.Add(row);


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.