Создание элемента (под ключом) очень просто, но как добавить подэлементы (значение)?
listView1.Columns.Add("Key");
listView1.Columns.Add("Value");
listView1.Items.Add("sdasdasdasd");
//How to add "asdasdasd" under value?
Создание элемента (под ключом) очень просто, но как добавить подэлементы (значение)?
listView1.Columns.Add("Key");
listView1.Columns.Add("Value");
listView1.Items.Add("sdasdasdasd");
//How to add "asdasdasd" under value?
Вот так:
ListViewItem lvi = new ListViewItem();
lvi.SubItems.Add("SubItem");
listView1.Items.Add(lvi);
Вы удаляете подэлементы в массив и добавляете массив как элемент списка.
Порядок, в котором вы добавляете значения в массив, определяет столбец, который они отображаются, поэтому подумайте о заголовках подпозиций как [0], [1], [2] и т.д.
Вот пример кода:
//In this example an array of three items is added to a three column listview
string[] saLvwItem = new string[3];
foreach (string wholeitem in listofitems)
{
saLvwItem[0] = "Status Message";
saLvwItem[1] = wholeitem;
saLvwItem[2] = DateTime.Now.ToString("dddd dd/MM/yyyy - HH:mm:ss");
ListViewItem lvi = new ListViewItem(saLvwItem);
lvwMyListView.Items.Add(lvi);
}
Предположим, что у вас есть коллекция списков, содержащая множество элементов для показа в ListView, возьмите следующий пример, который выполняет итерацию через Collection List:
foreach (Inspection inspection in anInspector.getInspections())
{
ListViewItem item = new ListViewItem();
item.Text=anInspector.getInspectorName().ToString();
item.SubItems.Add(inspection.getInspectionDate().ToShortDateString());
item.SubItems.Add(inspection.getHouse().getAddress().ToString());
item.SubItems.Add(inspection.getHouse().getValue().ToString("C"));
listView1.Items.Add(item);
}
Этот код производит следующий вывод в ListView (естественно, зависит от количества элементов, которые у вас есть в коллекции списка):
В основном первый столбец - это listviewitem, содержащий множество подпунктов (другие столбцы). Это может показаться странным, но listview очень гибкий, вы можете даже построить с ним такой же проводник, как и Windows!
Я уточнил это, используя метод расширения в ListViewItemsCollection. По-моему, это делает код вызова более кратким, а также способствует более широкому повторному использованию.
internal static class ListViewItemCollectionExtender
{
internal static void AddWithTextAndSubItems(
this ListView.ListViewItemCollection col,
string text, params string[] subItems)
{
var item = new ListViewItem(text);
foreach (var subItem in subItems)
{
item.SubItems.Add(subItem);
}
col.Add(item);
}
}
Вызов AddWithTextAndSubItems выглядит следующим образом:
// can have many sub items as it string array
myListViewControl.Items.AddWithTextAndSubItems("Text", "Sub Item 1", "Sub Item 2");
Надеюсь, это поможет!
Я думаю, что самый быстрый/самый простой способ сделать это:
Для каждого класса есть метод string[] obj.ToListViewItem()
, а затем выполните следующее:
foreach(var item in personList)
{
listView1.Items.Add(new ListViewItem(item.ToListViewItem()));
}
Вот пример определения
public class Person
{
public string Name { get; set; }
public string Address { get; set; }
public DateTime DOB { get; set; }
public uint ID { get; set; }
public string[] ToListViewItem()
{
return new string[] {
ID.ToString("000000"),
Name,
Address,
DOB.ToShortDateString()
};
}
}
В качестве дополнительного бонуса вы можете использовать метод static
, который возвращает список ColumnHeader[]
для настройки столбцов listview с помощью
listView1.Columns.AddRange(Person.ListViewHeaders());
ListViewItem item = new ListViewItem();
item.Text = "fdfdfd";
item.SubItems.Add ("melp");
listView.Items.Add(item);
Создать элемент списка
ListViewItem item1 = new ListViewItem("sdasdasdasd", 0)
item1.SubItems.Add("asdasdasd")
добавить:
.SubItems.Add("asdasdasd");
до последней строки вашего кода, чтобы в конце это выглядело так.
listView1.Items.Add("sdasdasdasd").SubItems.Add("asdasdasd");
Отлично! Это очень помогло мне. Я использовал то же самое с помощью VB6, но теперь он совершенно другой. мы должны добавить это
listView1.View = System.Windows.Forms.View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;
В общем:
ListViewItem item = new ListViewItem("Column1Text")
{ Tag = optionalRefToSourceObject };
item.SubItems.Add("Column2Text");
item.SubItems.Add("Column3Text");
myListView.Items.Add(item);