2010-12-06 151 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屬性免費留作未來可能的擴展使用。