创建项目(在键下)很简单,但如何添加子项(值)?
listView1.Columns.Add("Key");
listView1.Columns.Add("Value");
listView1.Items.Add("sdasdasdasd");
//How to add "asdasdasd" under value?
答案 0 :(得分:28)
将子项重组为数组并将数组添加为列表项。
向数组添加值的顺序决定了它们出现的列,因此请将子项标题视为[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);
}
答案 1 :(得分:24)
像这样:
ListViewItem lvi = new ListViewItem();
lvi.SubItems.Add("SubItem");
listView1.Items.Add(lvi);
答案 2 :(得分:15)
假设您有一个List Collection,其中包含要在ListView中显示的许多项,请使用以下示例迭代List Collection:
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中产生以下输出(当然取决于List Collection中有多少项):
基本上第一列是包含许多子项(其他列)的listviewitem。这可能看起来很奇怪,但listview非常灵活,您甚至可以用它构建一个类似Windows的文件浏览器!
答案 3 :(得分:3)
我使用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's string array
myListViewControl.Items.AddWithTextAndSubItems("Text", "Sub Item 1", "Sub Item 2");
希望这有帮助!
答案 4 :(得分:3)
我认为这是最快/最好的方法:
对于每个班级都有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[]
列表,以便使用
listView1.Columns.AddRange(Person.ListViewHeaders());
答案 5 :(得分:2)
ListViewItem item = new ListViewItem();
item.Text = "fdfdfd";
item.SubItems.Add ("melp");
listView.Items.Add(item);
答案 6 :(得分:2)
创建列表视图项
ListViewItem item1 = new ListViewItem("sdasdasdasd", 0)
item1.SubItems.Add("asdasdasd")
答案 7 :(得分:2)
添加:
.SubItems.Add("asdasdasd");
到你代码的最后一行,所以它最终看起来像这样。
listView1.Items.Add("sdasdasdasd").SubItems.Add("asdasdasd");
答案 8 :(得分:2)
一般而言:
ListViewItem item = new ListViewItem("Column1Text")
{ Tag = optionalRefToSourceObject };
item.SubItems.Add("Column2Text");
item.SubItems.Add("Column3Text");
myListView.Items.Add(item);
答案 9 :(得分:1)
太棒了!!它对我帮助很大。我曾经使用VB6做同样的事情,但现在它完全不同了。 我们应该添加这个
listView1.View = System.Windows.Forms.View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;