vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  18.282 
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

Dieser Tipp wurde bereits 18.282 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel