我有一個ListView並且啓用了排序,一旦我插入一個項目,我該如何獲取該項目的索引?ListView插入項目的索引
我可以使用ListView的Add方法返回的ListViewItem,但它是排序之前還是之後的索引?如果再次排序,它會被更新嗎?就像如果我存儲ListViewItem和ListView然後排序,將我以前存儲的ListViewItem,它的Index屬性也會被更新?
我有一個ListView並且啓用了排序,一旦我插入一個項目,我該如何獲取該項目的索引?ListView插入項目的索引
我可以使用ListView的Add方法返回的ListViewItem,但它是排序之前還是之後的索引?如果再次排序,它會被更新嗎?就像如果我存儲ListViewItem和ListView然後排序,將我以前存儲的ListViewItem,它的Index屬性也會被更新?
假設你要添加ListViewItem
:
listView.Items.Add(myItem);
int index = listView.Items.IndexOf(myItem);
嘗試使用listView.Items.IndexOfKey(name_of_your_item_goes_here)
或listView.Items.IndexOf(your_new_item)
如果你願意將其添加到列表之前創建ListViewItems。
取決於你如何添加:
ListViewItem item = ...;
listView.Items.Add(item);
int index = item.Index;
或
ListViewItem item = listView.Items.Add("ItemName");
int index = item.Index;
要回答你的問題,我錯過了前:是的,索引應該更新。
我可以得到O(1)嗎?什麼是ListViewItem.Name屬性?我可以將它用作字典中的鍵嗎? – ListViewItem 2010-07-22 08:09:34
@ListViewItem:當使用listView.Items [5]'時,它是一個'O(1)'操作。您可以使用'ListViewItem.Name'屬性作爲鍵,但是'listView.Items [「name」]'只有在**時纔是'O(n)'操作和'O(1)'操作** '<上次訪問的項目> .Name ==「名稱」'。 – 2010-07-22 08:43:56
速度快嗎?它的複雜性是什麼?它是否即時? – ListViewItem 2010-07-22 08:01:19
當然,這不是瞬間的。這是一臺電腦,不是魔術。 – 2010-07-22 08:02:26
@ListViewItem:它不是 - O(n)。檢查我的答案是一種快速的方法。 – 2010-07-22 08:03:25