2009-09-24 68 views
0

List itemsToMove = new List(); foreach(lvScanRepository.SelectedItems中的ListViewItem項) { itemsToMove.Add(item); }如何防止在listview中添加行的多個實例?

foreach (ListViewItem item in itemsToMove) 
{ 
    if (!lvBatch.Items.Contains(item)) 
    { 
     lvScanRepository.Items.Remove(item); 
     lvBatch.Items.Add(item); 
    } 
} 
+0

此代碼未篩選類似的代碼 – 2009-09-24 03:27:25

回答

1

一個ListViewItem的不能屬於一個以上的ListView在同一時間,所以這個條件:

if (!lvBatch.Items.Contains(item)) 

...永遠是正確的。

您希望使用什麼標準來確定一個ListView中的項目與另一個ListView中的項目是否「相似」?根據不同,你有幾個選擇:

ListViewItem有一個名爲Name的屬性,它可以用來唯一標識ListView中的項目。然後您可以致電Items.ContainsKey(String)查看是否存在具有該名稱的項目。

或者,你可以在搜索lvBatch用相同的文本作爲一個你想添加到找到一個項目:

if (!lvBatch.Items.Cast<ListViewItem>().Any(i => i.Text == item.Text)) 

(你需要轉換,因爲ListViewItemCollection並沒有真正實現IEnumerable<ListViewItem>

+0

謝謝!這是一個完美的解決方案! – 2009-09-24 04:27:28

相關問題