添加额外数据属性的一种简单方法是使用Tag 属性。您可以分配具有多个属性的类对象或简单的标量值,例如您的 id。 Tag 用途广泛,是许多控件的通用属性。
我们的人定义。
public class Person
{
public long id { get; set; }
public string name { get; set; }
public int age { get; set; }
}
示例 1:将 id 分配给 ListViewItem Tag 属性。
foreach (var person in col.listPersons)
{
ListViewItem lIt = new ListViewItem();
lIt.Tag = person.id;
lIt.SubItems.Add(person.name);
lIt.SubItems.Add(person.age.ToString());
lPer.Items.Add(lIt); // Add the item to ListView
}
然后您可以轻松地再次检索 id 值:
ListViewItem lit = sender as ListViewItem;
person.id = (long)lit.Tag;
示例 2:将整个 person 对象分配给 ListViewItem Tag 属性。
foreach (var person in col.listPersons)
{
ListViewItem lIt = new ListViewItem();
lIt.Tag = person;
lIt.SubItems.Add(person.name);
lIt.SubItems.Add(person.age.ToString());
lPer.Items.Add(lIt); // Add the item to ListView
}
同样简单,再次取回 person 对象:
ListViewItem lit = sender as ListViewItem;
person = (Person)lit.Tag;
示例 3:另一种常见的方法是使用 ListViewItem.Name 属性。该名称被视为 ListView 中的键。然后,您可以使用此键值传递给 ListView.Items.IndexOfKey() 或 ListView.Items["key"] 以便在 ListView 中搜索特定项目。 Name 是一个字符串,因此不如 Tag 灵活,但这可能更适合您的用例。
foreach (var person in col.listPersons)
{
ListViewItem lIt = new ListViewItem();
lIt.Name = person.id; // Treat the Name as a Key
lIt.SubItems.Add(person.name);
lIt.SubItems.Add(person.age);
lPer.Items.Add(lIt); // Add the item to ListView
// Retrieve the person back from the ListViewItemCollection by index.
var personIndex = lPer.Items.IndexOfKey(person.id.ToString());
var lItA = lPer.Items[personIndex];
// Retrieve the person back from the ListViewItemCollection by key.
var lItB = lPer.Items[person.id.ToString()];
}