2009-08-25 78 views
1

我有兩個ListViews ... 我有ListView(ListView1)與項目,另一個(ListView2)是空的。我需要提前從ListView1的檢查的項目複製到ListView2在同一時間我一直在使用C#來刪除ListView1的檢查的項目...checked listview items

我使用Windows窗體...

謝謝.. 。

回答

2

像這樣? (未測試!!)

for (int i = ListView1.Items.Count - 1; i >= 0; i--) 
{ 
    if (ListView1.Items[i].Checked) 
    { 
    ListView2.Items.Add(ListView1.Items[i]); 
    ListView1.Items.Remove(ListView.Items[i]); 
    // OR 
    // ListView1.Items.RemoveAt(i); 
    } 
} 

編輯:
這可能會更好。

CheckedListViewCollection checked = ListView1.CheckedItems 
foreach (itm in checked) 
{ 
    ListView2.Items.Add(itm); 
    ListView1.Items.Remove(itm); 
} 
+0

CheckedListViewCollection的使用很好。 – RRUZ 2009-08-25 10:05:53

+0

您的第二個解決方案是完成此操作的完美方式。謝謝! – CharithJ 2011-05-13 03:11:39

0

//複製的ListView

for (int i = ListView1.Items.Count - 1; i >= 0; i--) 
{ 
    if (ListView1.Items[i].Checked) 
    { 
    ListView2.Add(ListView1.Items[i]); 
    } 
} 


//Delete checked 

ListView1.CheckedIndexCollection checkedItemsList = listView1.CheckedIndices;  
while (checkedItemsList.Count > 0) 
{ 
    listView1.Items.RemoveAt(checkedItemsList[0]); 
} 

再見

+0

您的for循環中出現錯誤。應該閱讀我 - 。不是我++。 – 2009-08-25 09:53:57

+0

顯然我也是這樣! :D – 2009-08-25 09:55:33

+0

謝謝,CKret。 – RRUZ 2009-08-25 09:57:54

1
while (listView1.CheckedItems.Count > 0) 
{ 
    ListViewItem item = listView1.CheckedItems[0]; 
    listView1.Items.Remove(item); 
    listView2.Items.Add(item); 
}

測試。

請注意刪除和添加項目的順序。如果您嘗試將ListViewItem同時添加到多個列表,框架會拋出異常。