2009-08-25 7 views
1

Ich habe zwei ListViews ... Ich habe ListView (ListView1) mit Elementen, und ein anderes (ListView2) ist leer. Ich brauche die markierten Produkte aus ListView1 zu ListView2 zugleich i die geprüfte Artikel in ListView1 mit C# entfernen, kopieren ...überprüfte Listenansicht Elemente

ich Fenster Form bin mit ...

Vielen Dank im Voraus ..

Antwort

2

So ähnlich? (Nicht getestet !!)

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); 
    } 
} 

EDIT:
Dies könnte besser sein.

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

Die Verwendung von CheckedListViewCollection ist nett. – RRUZ

+0

Ihre zweite Lösung ist der perfekte Weg, dies zu tun. Vielen Dank! – CharithJ

0

// Copy 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]); 
} 

Bye

+0

Sie haben einen Fehler in Ihrer for-Schleife. Sollte ich lesen--. Nicht ich ++. –

+0

Anscheinend habe ich auch !!! : D –

+0

Danke, CKret. – RRUZ

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

getestet.

Beachten Sie die Reihenfolge des Entfernens und Hinzufügens. Das Framework gibt eine Ausnahme aus, wenn Sie versuchen, gleichzeitig mehr als eine Liste mit ListViewItem zu verknüpfen.

Verwandte Themen