2010-07-22 104 views
0

我有一個ListView並且啓用了排序,一旦我插入一個項目,我該如何獲取該項目的索引?ListView插入項目的索引

我可以使用ListView的Add方法返回的ListViewItem,但它是排序之前還是之後的索引?如果再次排序,它會被更新嗎?就像如果我存儲ListViewItem和ListView然後排序,將我以前存儲的ListViewItem,它的Index屬性也會被更新?

回答

0

假設你要添加ListViewItem

listView.Items.Add(myItem); 
int index = listView.Items.IndexOf(myItem); 
+0

速度快嗎?它的複雜性是什麼?它是否即時? – ListViewItem 2010-07-22 08:01:19

+0

當然,這不是瞬間的。這是一臺電腦,不是魔術。 – 2010-07-22 08:02:26

+0

@ListViewItem:它不是 - O(n)。檢查我的答案是一種快速的方法。 – 2010-07-22 08:03:25

0

嘗試使用listView.Items.IndexOfKey(name_of_your_item_goes_here)listView.Items.IndexOf(your_new_item)如果你願意將其添加到列表之前創建ListViewItems。

2

取決於你如何添加:

ListViewItem item = ...; 
listView.Items.Add(item); 
int index = item.Index; 

ListViewItem item = listView.Items.Add("ItemName"); 
int index = item.Index; 

要回答你的問題,我錯過了前:是的,索引應該更新。

+0

我可以得到O(1)嗎?什麼是ListViewItem.Name屬性?我可以將它用作字典中的鍵嗎? – ListViewItem 2010-07-22 08:09:34

+1

@ListViewItem:當使用listView.Items [5]'時,它是一個'O(1)'操作。您可以使用'ListViewItem.Name'屬性作爲鍵,但是'listView.Items [「name」]'只有在**時纔是'O(n)'操作和'O(1)'操作** '<上次訪問的項目> .Name ==「名稱」'。 – 2010-07-22 08:43:56

相關問題