Pab*_*uca 4 c# hidden listview
我有一个ListView,其中显示具有相关属性的对象(人员)列表,这些属性是:名称(字符串),年龄(int)。但是此对象还具有id属性,该属性用于将它们彼此区分开。
问题是,当我单击代表对象的项目时,存储id值以检索它的“正确”方法是什么?
为此,我使用了隐藏列(列宽= 0),但我认为这不是一个好方法。
foreach (var person in col.listPersons )
{
ListViewItem lIt = new ListViewItem(person.id); //Column with width = 0
lIt.SubItems.Add(person.name);
lIt.SubItems.Add(person.age);
lPer.Items.Add(lIt) //Add the item to ListView
}
Run Code Online (Sandbox Code Playgroud)
添加额外数据属性的一种简单方法是使用该Tag
属性。您可以分配具有多个属性的类对象或简单的标量值(例如您的id)。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);
lPer.Items.Add(lIt); //Add the item to ListView
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以轻松地再次检索id值,例如:
ListViewItem lit = sender as ListViewItem();
person.id = lit.Tag;
Run Code Online (Sandbox Code Playgroud)
另一种常见的方法是使用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
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3205 次 |
最近记录: |