Rubrik: Controls · ListView & TreeView | VB-Versionen: VB2005, VB2008 | 09.12.09 |
ListView-Eintrag nach oben/unten verschieben Mit diesem Code lässt sich der gerade selektierte ListView-Eintrag innerhalb der Liste nach oben bzw. nach unten verschieben. | ||
Autor: Dieter Otter | Bewertung: | Views: 18.310 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute möchten wir Ihnen zwei nützliche Funktionen vorstellen, mit denen sich der gerade selektierte Eintrag innerhalb eines ListView-Controls um eine Position nach oben bzw. nach unten verschieben lässt.
''' <summary> ''' Verschiebt den aktuell selektierten Eintrag um eine Position nach oben ''' </summary> ''' <param name="sender">ListView-Control</param> ''' <returns>True, wenn erfolgreich. Andernfalls False.</returns> Public Function lvItem_Up(ByVal sender As ListView) As Boolean With sender If .SelectedItems.Count = 1 Then ' aktuellen Eintrag und Position merken Dim oItem As ListViewItem = .SelectedItems(0) Dim index = oItem.Index If index > 0 Then ' jetzt den markierten Eintrag löschen .SelectedItems(0).Remove() ' und den "gemerkten" Eintrag eine Position weiter oben einfügen .Items.Insert(index - 1, oItem) ' Eintrag wieder selektieren oItem.Selected = True oItem.EnsureVisible() oItem.Focused = True Return True End If End If End With End Function
''' <summary> ''' Verschiebt den aktuell selektierten Eintrag um eine Position nach unten ''' </summary> ''' <param name="sender">ListView-Control</param> ''' <returns>True, wenn erfolgreich. Andernfalls False.</returns> Public Function lvItem_Down(ByVal sender As ListView) As Boolean With sender If .SelectedItems.Count = 1 Then ' aktuellen Eintrag und Position merken Dim oItem As ListViewItem = .SelectedItems(0) Dim index = oItem.Index If index < .Items.Count - 1 Then ' jetzt den markierten Eintrag löschen .SelectedItems(0).Remove() ' und den "gemerkten" Eintrag eine Position weiter oben einfügen .Items.Insert(index + 1, oItem) ' Eintrag wieder selektieren oItem.Selected = True oItem.EnsureVisible() oItem.Focused = True Return True End If End If End With End Function
Aufrufbeispiel:
Erstellen Sie ein ListView-Control und füllen es mit Daten. Über zwei Schaltflächen (btnUp und btnDown) soll man den selektierten Eintrag dann nach oben bzw. unten verschieben können.
Private Sub btnUp_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnUp.Click ' Eintrag eine Position nach oben schieben lvItem_Up(ListView1) End Sub
Private Sub btnDown_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDown.Click ' Eintrag um eine Position nach unten schieben lvItem_Down(ListView1) End Sub