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 15.435 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. |
TOP! Unser Nr. 1 ![]() Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats ![]() Dieter Otter PopUp-Menü wird nicht angezeigt :-( In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.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. |