vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · ListView & TreeView   |   VB-Versionen: VB2005, VB200809.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 OtterBewertung:  Views:  18.310 
www.tools4vb.deSystem:  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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.