Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 172
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Ausgewählte Items in einer ListBox löschen


Autor: Metal-Frog
Sprache: VB.NET
Bewertung:
6.23 (3 votes)
Anzahl der Aufrufe: 14175
  
Kick it on dotnet-kicks.de  

Beschreibung:

Dieses Snippet zeigt die beste Methode, ausgewählte Items einer ListBox zu löschen.
Durch verschiedene Performance-Tests wurde diese Variante erarbeitet.
Beim Durchlaufen der Auflistung der Listbox-Items darf diese nicht verändert werden. Daher ist es nicht möglich, bei diesem Durchlauf die Items gleich zu löschen.
Die Indizes der zu löschenden Items werden daher zunächst in einer Collection gespeichert.
Anschließend werden die Items (in ungekehrter Reihenfolge) aus der Auflistung entfernt.


Abgelegt unter: ListBox, ListBox-Items, löschen, Auflistung, entfernen.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub DeletedCheckedItemsInListbox(lb as ListBox)
      Dim colDel As New List(Of Integer)


      For Each i As Integer In lb.CheckedIndices
	colDel.Add(i)
      Next
      colDel.Reverse()
      For Each i As Integer In colDel
	lb.Items.RemoveAt(i)
      Next
      colDel = Nothing
End Sub
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

dbl schrieb am:  18.07.2008 08:30:15

Danke, das ist wirklich praktisch gelöst.
Jäger schrieb am:  20.08.2010 10:14:27

Hi Metallfrosch, das ist genial und war wichtig für mich! Vielen Dank!

Anmerkung: Da CheckedIndices in ASP.NET nicht verfügbar ist, hier die Abwandlung:
    Public Sub DeletedCheckedItemsInListbox(ByVal lb As ListBox)
Dim colDel As New List(Of Integer)

For i As Integer = 0 To lb.Items.Count - 1
If lb.Items(i).Selected Then colDel.Add(i)
Next
colDel.Reverse()
For Each i As Integer In colDel
lb.Items.RemoveAt(i)
Next
colDel = Nothing
End Sub
Rüdiger Vossel schrieb am:  20.08.2010 13:08:22

Verändert man durch das RemoveAt(i) nicht die Indizes der folgenden Items?
Dann wäre das Ergebins doch falsch?!?!
Keks1911 schrieb am:  24.08.2010 07:04:44

@Rüdiger: Ja, allerdings nicht hier. Die Indizes werden von hinten her gelöscht.

Gut gelöst!
Rüdiger Vossel schrieb am:  30.08.2010 16:16:33

colDel.Reverse() ... Wer lesen kann gewinnt ! Danke!
GregorD schrieb am:  24.11.2010 08:39:47

Eine elegante Lösung!
Nur leider komisch: Bei mir funzt das nicht.
In der Listbox steht die SelectionMode-Eigenschaft auf MultiExtended.
Die Zeile "For Each i As Integer In lb.CheckedIndices" löst bei mir sofort den Fehler aus, daß der Index außerhalb des Bereiches war.
Hat jemand eine Idee?


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.