C # listView, bagaimana cara menambahkan item ke kolom 2, 3 dan 4 dll?

106

Untuk menambahkan item ke kolom 1 di listViewcontrol saya ( Winform) yang saya gunakan listView1.Items.Add, ini berfungsi dengan baik tetapi bagaimana cara menambahkan item ke kolom 2 dan 3 dll?

Kiquenet
sumber
8
+1: Pertanyaan bagus. bagian dari kontrol ListView ini sangat membingungkan dan tidak intuitif. Terkadang saya benar-benar berpikir mereka membenci pengembang @ MS
Mehdi LAMRANI
1
@ Mika: Tidak mudah untuk mengabstraksikan kerumitan desain GUI yang kuat dari pengguna.
Christopher Berman
1
(Kedengarannya kurang menggurui di kepala saya; maaf!)
Christopher Berman
Tambahkan ke subiiems
Ramankingdom

Jawaban:

134

Ada beberapa cara untuk melakukannya, tetapi ini adalah satu solusi (untuk 4 kolom).

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

Dan cara yang lebih bertele-tele ada di sini:

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});
Inisheer
sumber
65

Anda dapat menambahkan item / sub-item ke ListView seperti:

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

Tapi saya menduga masalah Anda adalah dengan Jenis Tampilan . Atur di desainer ke Detail atau lakukan hal berikut dalam kode:

listView1.View = View.Details;
bruno conde
sumber
2
Sangat penting juga untuk menggunakan "listView1.FullRowSelect = true" ... jika tidak, hanya kolom 1 yang dapat diklik. Saya berharap saya tahu ini sebelumnya! itu akan menghemat banyak pekerjaan.
John Henckel
Terutama komentar tentang listView1.View memang membantu saya! Thnx!
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);

        }
ken4ward
sumber
7

Berikut adalah dokumentasi msdn pada objek listview dan objek 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

Saya akan sangat menyarankan agar Anda setidaknya meluangkan waktu untuk membaca sekilas dokumentasi pada objek apa pun yang Anda gunakan dari kerangka kerja .net. Meskipun dokumentasinya bisa sangat buruk pada beberapa waktu, namun tetap tidak ternilai harganya terutama ketika Anda mengalami situasi seperti ini.

Tapi seperti yang dikatakan James Atkinson, itu hanya masalah menambahkan subitem ke listviewitem seperti:

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

Untuk masalah Anda gunakan seperti ini:

ListViewItem row = new ListViewItem(); 
row.SubItems.Add(value.ToString()); 
listview1.Items.Add(row);
Satu m
sumber
0

Satu baris yang telah saya buat dan berhasil:

listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = randomArray["maintext"], SubItems = { randomArray["columntext2"], randomArray["columntext3"] } });
David Rodrigues
sumber
-2

Gunakan ListViewSubItem - Lihat: MSDN

Jan Bannister
sumber