Der nachfolgende Code zeigt, wie sich der aktuell selektierte Eintrag innerhalb eines ListBox-Controls verschieben lässt:
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:
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 Dieser Tipp wurde bereits 21.199 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
Neu! sevPopUp 2.0 ![]() Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats ![]() Matthias Kozlowski Umlaute konvertieren Ersetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||
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. |