2010-12-06 191 views

回答

2

可以使用ListViewItem.Tag属性来存储一个参考的任何对象,SetItemDataPtr相当于()。名称属性可以方便地用作字典<>中的键。 Index属性可以用于索引List <>。后两种方法是更好的解决方案,您通常希望将数据与视图分开。

+0

噢,非常感谢) – 2010-12-06 20:50:26

+0

@Sanja Melnichuk:索引不完全适用于存储项目中的任意数据,因为索引也控制列表中项目的顺序。名称有一些限制,如不支持名称中的空格,并且不支持具有相同名称的多个项目。我强烈建议从ListViewItem派生一个类,并将数据定义为此项的成员。看到我的回答如下... – Ran 2010-12-06 20:57:42

2

你看过MSDN上的ListViewItem类吗?那里有丰富的信息和样本。

  // Create three items and three sets of subitems for each item. 
      ListViewItem item1 = new ListViewItem("item1",0); 
      // Place a check mark next to the item. 
      item1.Checked = true; 
      item1.SubItems.Add("1"); 
      item1.SubItems.Add("2"); 
      item1.SubItems.Add("3"); 
      ListViewItem item2 = new ListViewItem("item2",1); 
      item2.SubItems.Add("4"); 
      item2.SubItems.Add("5"); 
      item2.SubItems.Add("6"); 
      ListViewItem item3 = new ListViewItem("item3",0); 
      // Place a check mark next to the item. 
      item3.Checked = true; 
      item3.SubItems.Add("7"); 
      item3.SubItems.Add("8"); 
      item3.SubItems.Add("9"); 
0

其中一种方式:您需要创建自己的班级,例如MyItem并将您的物品放入List<MyItem>。然后使用数据绑定。类MyItem应该实现ToString()返回字符串的方法将显示在ListView中。

5

最推荐的方法是创建自己的类,从ListViewItem派生,并将此类的实例添加到ListView。这样您可以将任何数据存储在项目中。

这比使用Tag属性更好,因为几个原因:

  • 你的项目的数据类型可以是安全的,你就不必从Object强制每个访问。
  • 您可以存储多个值。
  • 在面向对象编程方面它更加正确。
  • 您可以将Tag属性免费留作未来可能的扩展使用。