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

https://www.vbarchiv.net
Rubrik: Controls · ListBox & ComboBox   |   VB-Versionen: VB2005, VB200820.01.09
ListBox-Einträge innerhalb der Liste verschieben

Vier nützliche Funktionen zum Verschieben eines ListBox-Eintrags innerhalb der Liste.

Autor:   Dieter OtterBewertung:  Views:  20.182 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Der nachfolgende Code zeigt, wie sich der aktuell selektierte Eintrag innerhalb eines ListBox-Controls verschieben lässt:

  • an den Anfang der Liste
  • eine Position nach oben
  • eine Position nach unten
  • an das Ende der Liste

Der Eintrag selbst bleibt nach dem Verschieben weiterhin markiert, so dass man z.B. durch mehrfaches Klicken auf einen Button den aktuellen Eintrag erneut nach oben/unten verschieben kann.

Erstellen Sie ein neues Projekt und plazieren folgende Controls auf die Form:

  • ListBox (ListBox1)
  • CommandButton (btnFirst)
  • CommandButton (btnPrev)
  • CommandButton (btnNext)
  • CommandButton (btnLast)

Fügen Sie nachfolgenden Code in den Codeteil der Form ein und starten anschließend das Beispielprojekt, um die "Verschiebe"-Funktionen zu testen.

Public Class Form1
  Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
 
    ' ListBox füllen
    With ListBox1.Items
      For i As Integer = 1 To 100
        .Add("Eintrag " & CStr(i))
      Next
    End With
 
    btnFirst.Text = "|<"
    btnPrev.Text = "<"
    btnNext.Text = ">"
    btnLast.Text = ">|"
  End Sub
  ''' <summary>
  ''' Verschiebt den aktuell selektierten Eintrag an die 1. Position
  ''' </summary>
  Private Sub lb_MoveFirst(ByVal sender As ListBox)
    With sender
      Dim index As Integer = .SelectedIndex
      If index > 0 Then
        Dim oTemp As Object = .SelectedItem
        .Items.RemoveAt(index)
        .Items.Insert(0, oTemp)
        .SelectedIndex = 0
      End If
    End With
  End Sub
  ''' <summary>
  ''' Verschiebt den aktuell selektierten Eintrag um eine Position nach oben
  ''' </summary>
  ''' <param name="sender"></param>
  ''' <remarks></remarks>
  Private Sub lb_MovePrev(ByVal sender As ListBox)
    With sender
      Dim index As Integer = .SelectedIndex
      If index > 0 Then
        Dim oTemp As Object = .SelectedItem
        .Items.RemoveAt(index)
        .Items.Insert(index - 1, oTemp)
        .SelectedIndex = index - 1
      End If
    End With
  End Sub
  ''' <summary>
  ''' Verschiebt den aktuell selektierten Eintrag um eine Position nach unten
  ''' </summary>
  Private Sub lb_MoveNext(ByVal sender As ListBox)
    With sender
      Dim index As Integer = .SelectedIndex
      If index < .Items.Count - 1 Then
        Dim oTemp As Object = .SelectedItem
        .Items.RemoveAt(index)
        .Items.Insert(index + 1, oTemp)
        .SelectedIndex = index + 1
      End If
    End With
  End Sub
  ''' <summary>
  ''' Verschiebt den aktuell selektierten Eintrag an das Ende der Liste
  ''' </summary>
  Private Sub lb_MoveLast(ByVal sender As ListBox)
    With sender
      Dim index As Integer = .SelectedIndex
      If index < .Items.Count - 1 Then
        Dim oTemp As Object = .SelectedItem
        .Items.RemoveAt(index)
        .Items.Add(oTemp)
        .SelectedIndex = .Items.Count - 1
      End If
    End With
  End Sub
  Private Sub btnFirst_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnFirst.Click
 
    ' aktuellen Eintrag ganz nach oben schieben
    lb_MoveFirst(ListBox1)
  End Sub
  Private Sub btnPrev_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnPrev.Click
 
    ' Eintrag um eine Position nach oben schieben
    lb_MovePrev(ListBox1)
  End Sub
 
  Private Sub btnNext_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnNext.Click
 
    ' Eintrag um eine Position nach unten schieben
    lb_MoveNext(ListBox1)
  End Sub
  Private Sub btnLast_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnLast.Click
 
    ' Eintrag an das Ende der Liste schieben
    lb_MoveLast(ListBox1)
  End Sub
End Class



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.