Heute zeigen wir Ihnen, wie man den selektierten Eintrag aus einer ListBox via Drag & Drop in eine zweite ListBox verschieben bzw. kopieren kann. Hierbei soll folgendes gelten: Platzieren Sie zwei ListBoxen auf die Form und fügen nachfolgenden Code in den Code-Teil der Form ein: Public Class Form1 ' aktuelle Mauszeiger-Position Private mPoint As Point Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' ListBox1 mit ein paar Einträgen füllen With ListBox1.Items For i As Integer = 1 To 15 .Add("Eintrag " & CStr(i)) Next End With ' ListBox2 soll Daten via Drag & Drop empfangen können ListBox2.AllowDrop = True End Sub Private Sub ListBox1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown ' bei gedrückter linker Maustaste, Koordinaten merken If e.Button = Windows.Forms.MouseButtons.Left Then mPoint = e.Location End If End Sub Private Sub ListBox1_MouseMove(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove ' Prüfen, ob Maus bei gedrückter Taste bewegt wurde ' Erst wenn die Maus mind. 5 Pixel bewegt wurde, ' Drag & Drop Vorgang einleiten If e.Button = Windows.Forms.MouseButtons.Left Then If Math.Abs(e.X - mPoint.X) >= 5 OrElse Math.Abs(e.Y - mPoint.Y) >= 5 Then With ListBox1 If .SelectedIndex >= 0 Then .DoDragDrop(.SelectedItem.ToString, DragDropEffects.Copy Or DragDropEffects.Move) End If End With End If End If End Sub Private Sub ListBox2_DragEnter(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragEnter ' Prüfen, ob das Data-Objekt "Text" enthält If e.Data.GetDataPresent(DataFormats.Text) Then ' Drag & Drop zulassen If (e.KeyState And 8) = 0 Then ' Verschieben e.Effect = DragDropEffects.Move Else ' bei gedrückter STRG-Taste, Kopieren e.Effect = DragDropEffects.Copy End If Else ' keine Drag & Drop Aktion zulassen e.Effect = DragDropEffects.None End If End Sub Private Sub ListBox2_DragDrop(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragDrop ' Data-Objekt auslesen Dim sItem As String = e.Data.GetData(DataFormats.Text) With ListBox2 ' Eintrag unter dem Mauszeiger ermitteln Dim p As Point = .PointToClient(Cursor.Position) Dim index As Integer = .IndexFromPoint(p) If index < 0 Then ' ans Ende der Liste anfügen .Items.Add(sItem) Else ' an aktuelle Position einfügen .Items.Insert(index, sItem) End If ' ist die STRG-Taste nicht gedrückt, soll der Eintrag ' von der ListBox1 in die ListBox VERSCHOBEN werden, d.h. ' es muss der selektierte Eintrag aus der 1. ListBox ' gelöscht werden If e.Effect = DragDropEffects.Move Then ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) End If End With End Sub End Class Dieser Tipp wurde bereits 16.219 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
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. |