C # listView, как добавить элементы в столбцы 2, 3 и 4 и т. Д.?

106

Чтобы добавить элементы в столбец 1 в моем listViewэлементе управления ( Winform), который я использую listView1.Items.Add, это работает нормально, но как мне добавить элементы в столбцы 2 и 3 и т. Д.?

Kiquenet
источник
8
+1: Хороший вопрос. эта часть элемента управления ListView очень запутанна и не интуитивно понятна. Иногда мне кажется, что они ненавидят разработчиков @ MS
Mehdi LAMRANI
1
@Mika: Нелегко отвлечь от пользователя сложность надежного дизайна графического интерфейса.
Кристофер Берман
1
(В моей голове это прозвучало менее покровительственно; извините!)
Кристофер Берман
Добавить в подписку
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. Хотел бы я знать об этом раньше! это сэкономило бы мне кучу работы.
Джон Хенкель
Особенно мне помогло замечание о 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);

        }
ken4ward
источник
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. Хотя иногда документация может быть довольно скудной, она все же бесценна, особенно когда вы сталкиваетесь с подобными ситуациями.

Но, как сказал Джеймс Аткинсон, это просто вопрос добавления подпунктов в элемент списка, например:

ListViewItem i = new ListViewItem("column1");
i.SubItems.Add("column2");
i.SubItems.Add("column3");
CalvinR
источник
4

Для вашей проблемы используйте это:

ListViewItem row = new ListViewItem(); 
row.SubItems.Add(value.ToString()); 
listview1.Items.Add(row);
OneM
источник
0

Одна строчка, которую я сделал, и она работает:

listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = randomArray["maintext"], SubItems = { randomArray["columntext2"], randomArray["columntext3"] } });
Дэвид Родригес
источник