Warum funktioniert die Änderung der Reihenfolge in einem ListView nach dem Sortieren in VB.NET 2003 nicht mehr?

Antwort

In VB.NET 2003 (also .NET Framework 1.1) gibt es beim `ListView`-Steuerelement einige Einschränkungen im Vergleich zu späteren Versionen. Das Problem, dass nach dem Sortieren die Änderung der Reihenfolge (z.B. per Drag & Drop oder durch manuelles Verschieben der Items) nicht mehr funktioniert, ist bekannt und hängt mit der Art und Weise zusammen, wie das `ListView`-Control intern arbeitet. **Hintergrund:** - Wenn du das `ListView` sortierst (z.B. durch Setzen der `ListViewItemSorter`-Eigenschaft oder durch Klicken auf eine Spaltenüberschrift), wird die Reihenfolge der Items durch den Sortieralgorithmus bestimmt. - Nach dem Sortieren kannst du die Reihenfolge der Items nicht mehr einfach durch Verschieben im Code ändern, weil der Sorter die Reihenfolge immer wieder überschreibt. **Lösungsvorschläge:** 1. **Sortierung deaktivieren:** Wenn du die Reihenfolge manuell ändern möchtest, musst du die Sortierung deaktivieren, indem du `ListViewItemSorter = Nothing` setzt. Danach kannst du die Items verschieben. ```vb.net ListView1.ListViewItemSorter = Nothing ' Jetzt Items verschieben ``` 2. **Sortierung nach Verschieben neu anwenden:** Wenn du nach dem Verschieben wieder sortieren möchtest, setze den Sorter erneut: ```vb.net ' Nach dem Verschieben ListView1.ListViewItemSorter = MeinComparer ListView1.Sort() ``` 3. **Eigene Verwaltung der Reihenfolge:** Wenn du eine benutzerdefinierte Reihenfolge benötigst (z.B. per Drag & Drop), solltest du die Sortierung komplett deaktivieren und die Reihenfolge der Items selbst verwalten. 4. **ListView neu befüllen:** Manchmal hilft es, die Items in eine temporäre Liste zu kopieren, das ListView zu leeren und dann die Items in der gewünschten Reihenfolge wieder hinzuzufügen. **Wichtiger Hinweis:** Das Verhalten ist in neueren .NET-Versionen ähnlich, aber dort gibt es mehr Möglichkeiten, z.B. mit DataBinding oder eigenen Sortiermechanismen. **Zusammenfassung:** Nach dem Sortieren mit einem `ListViewItemSorter` kannst du die Reihenfolge der Items nicht mehr direkt ändern, weil der Sorter die Reihenfolge bestimmt. Deaktiviere die Sortierung, ändere die Reihenfolge, und aktiviere sie ggf. wieder. Weitere Infos findest du z.B. in der [Microsoft-Dokumentation zum ListView.Sort-Methode](https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.listview.sort?view=netframework-1.1).

KI fragen

Verwandte Fragen

Wie kann ich in VB.NET 2003 eine ListView per OpenFileDialog (Multiselect = true) mit Name und Fullname ausgewählter Dateien füllen?

Um in VB.NET 2003 eine `ListView` mit dem Namen und dem vollständigen Pfad (FullName) der über einen `OpenFileDialog` (mit `Multiselect = True`) ausgewählten Dateien zu füllen, kan... [mehr]

Wie zeigt man in VB.NET 2003 in einer ListView die Icons versteckter Dateien halbtransparent an?

Um in VB.NET 2003 in einer `ListView` die Icons versteckter Dateien halbtransparent (wie im Windows Explorer) darzustellen, sind mehrere Schritte nötig, da die Standard-ListView-Steuerung dies ni... [mehr]

Wie sortiert man in VB.NET 2003 Datums- oder Größendaten in einem ListView?

Um in VB.NET 2003 die Einträge eines `ListView` nach Datum oder Größe zu sortieren, musst du einen benutzerdefinierten Sortierer implementieren, da die Standard-Sortierung nur nach Tex... [mehr]

Wie nutze ich UseItemStyleForSubItems in VB.NET 2003?

Die Eigenschaft `UseItemStyleForSubItems` ist Teil des `ListViewItem`-Objekts in Windows Forms (WinForms) in VB.NET. Sie steuert, ob die Unterelemente (SubItems) eines ListView-Elements (`ListViewItem... [mehr]

Wie ändere ich in VB.NET 2003 die ForeColor von ListView-SubItems?

In VB.NET 2003 (also .NET Framework 1.1) ist es leider nicht direkt möglich, die `ForeColor` (Textfarbe) einzelner SubItems in einem `ListView`-Steuerelement zu ändern. Die Standard-ListView... [mehr]

Gibt es eine Möglichkeit, in VB.NET 2003 die Farbe der SelectedItems eines ListViews zu beeinflussen?

In VB.NET 2003 (also .NET Framework 1.1) gibt es leider keine direkte Möglichkeit, die Farbe der ausgewählten Elemente (`SelectedItems`) eines `ListView`-Steuerelements im Detail- oder Repor... [mehr]

Kann man mit VB.NET 2003 effizient Vorschaubilder für die Miniaturansicht eines ListView erstellen?

Ja, mit VB.NET 2003 kannst du Vorschaubilder (Thumbnails) für die Miniaturansicht eines ListView zeitsparend erstellen. Dazu nutzt du die Klassen aus dem Namespace `System.Drawing`. Hier ein grun... [mehr]

Wie füge ich in VB.NET 2003 einen ListViewItem-Clone in ein existierendes ListViewItem einer zweiten ListView ein?

Um in VB.NET 2003 ein **ListViewItem** von einer ListView in eine andere zu kop, kannst du die `Clone()`Methode verwenden. Dabei wird ein, identisches ListViewItem erzeug, das du dann der zweiten List... [mehr]

Wie kehrt man in VB.NET 2003 die Reihenfolge der Zeilen eines ListView um?

Um in VB.NET 2003 die Reihenfolge der Zeilen (Items) eines ListView-Steuerelements umzukehren, kannst du die Items in eine Liste kopieren, diese umkehren und dann das ListView neu befüllen. Hier... [mehr]

Wie kopiert man in VB.NET 2003 eine oder mehrere ListView-Zeilen per Clipboard?

Um in VB.NET 2003 eine oder mehrere Zeilen (Items) aus einer `ListView` in die Zwischenablage (Clipboard) zu kopieren, gehst du wie folgt vor: 1. **Ausgewählte Zeilen ermitteln:** Über... [mehr]