Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 27.01.09 |
ListBox-Einträge per Maus verschieben Dieser Tipp zeigt, wie sich ein ListBox-Eintrag per gedrückter Maustaste nach oben oder nach unten verschieben lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.089 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wollten Sie nicht schon immer einmal einzelne Listbox-Einträge mit der Maus verschieben? D.h. Sie klicken auf einen Eintrag, halten die Maustaste gedrückt und ziehen die Maus dann nach oben oder nach unten.
Nachfolgend der entsprechende VB-Code.
Zum Ausprobieren benötigen Sie lediglich eine Form und eine Listbox.
Public Class Form1 ' Merker für den aktuell ausgewählten ListBox-Eintrag Private nIndex As Integer = -1
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' ListBox mit 100 Einträgen füllen For i As Integer = 1 To 100 ListBox1.Items.Add("Eintrag " & CStr(i)) Next End Sub
Private Sub ListBox1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown ' Index des aktuell selektierten Eintrags merken nIndex = ListBox1.SelectedIndex End Sub
Private Sub ListBox1_MouseMove(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove ' Button gedrückt und Eintrag ausgewählt? If e.Button = Windows.Forms.MouseButtons.Left AndAlso nIndex > -1 Then With ListBox1 If nIndex <> .SelectedIndex Then ' vorhergehenden Eintrag zwischenspeichern Dim Item As Object = .Items(nIndex) ' vorhergehenden Eintrag durch aktuellen ' Eintrag ersetzen .Items(nIndex) = .Items(.SelectedIndex) ' aktuellen Eintrag durch vorgehenden ' Eintrag ersetzen .Items(.SelectedIndex) = Item ' Index des aktuellen Eintrags "merken" nIndex = .SelectedIndex End If End With End If End Sub
Private Sub ListBox1_MouseUp(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseUp ' Beim Loslassen der Maus "Merker" zurücksetzen nIndex = -1 End Sub
End Class