ListView Remove()



  • Hallo,

    was ist da falsch?

    int c =listView1->Items->Count;
    
    for(idx;idx<=c;idx++)  
    	{
    		if(listView1->Items[idx]->Checked == true)
    		{
    		listView1->Items[idx]->Remove();
    		cnt--;  //Global definiert, brauche ich zum auffüllen der ListView...
    		return;
    		} 
    		else
    		{
    		label2->Text ="nix zu tun";
    		}
    	};
    

    Es klappt, das ich ein "gechecketes" Item (ganze Zeile, mit SubItems) lösche, aber es wird nur eine gecheckte Zeile gelöscht, auch wenn mehrere gecheckt sind. Ich möchte aber das alle auf einmal gelöscht werden...

    Aber, wenn die ListView leer ist, oder nichts mehr gecheckt ist und ich auf löschen button drücke, der obigen Code enthält bekomme ich folgendes:

    Eine nicht behandelte Ausnahme des Typs "System.ArgumentOutOfRangeException" ist in System.Windows.Forms.dll aufgetreten.

    Zusätzliche Informationen: InvalidArgument=Value mit dem Wert 2 ist für index ungültig.

    Ich weiß nicht wo der Index Fehler liegt, any Ideas?

    mfg



  • so gehts:

    for (idx = c -1; idx >= 0; idx--)
        {
            if (listView1->Items[idx]->Checked == true)
            {
                    listView1->Items[idx]->Remove();
    				cnt--;
    
            }
        };
    

    😕 😕 👍


Anmelden zum Antworten