Drag & Drop für Visual Basic 6.0-Benutzer
Aktualisiert: November 2007
Das Modell für die Implementierung der Drag & Drop-Bearbeitung in Visual Basic 2008 unterscheidet sich erheblich vom Visual Basic 6.0-Modell.
Konzeptionelle Unterschiede
In Visual Basic 6.0 kann die Drag & Drop-Bearbeitung mit zwei verschiedenen Methoden ausgeführt werden: Standard-Dragging zum Ziehen zwischen Steuerelementen auf einem Formular und OLE-Dragging zum Ziehen zwischen Formularen und Anwendungen.
In Visual Basic 2008 wird für die Drag & Drop-Bearbeitung ein einziges Modell verwendet. Es ist mit OLE-Dragging vergleichbar. Jedoch unterscheiden sich die Namen und Parameter für Drag & Drop-Methoden und -Ereignisse, und das Ereignismodell weist Unterschiede auf.
Änderungen am Code für Drag & Drop
Änderungen am Code zur Textbearbeitung mit Drag & Drop
Im folgenden Beispiel werden die Unterschiede zwischen Codevarianten veranschaulicht, die das Ziehen von Text aus einem TextBox-Steuerelement in ein anderes bestimmen.
' Visual Basic 6.0
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Text = "Hello World"
' Begin dragging by calling the OLEDrag method.
Text1.OLEDrag
End Sub
Private Sub Text1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
' Only allow copying.
AllowedEffects = vbDropEffectCopy
Data.Clear
' Populate the Data object with the text to copy and the format.
Data.SetData Text1.Text, vbCFText
End Sub
Private Sub Text2_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
' Make sure that the format is text.
If Data.GetFormat(vbCFText) Then
' If it is text, enable dropping for the second TextBox.
Text2.OLEDropMode = vbOLEDropManual
End If
End Sub
Private Sub Text2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
' Copy the text from the Data object to the second TextBox.
Text2.Text = Data.GetData(vbCFText)
End Sub
' Visual Basic
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
' Dropping must be enabled before the dragging occurs.
TextBox2.AllowDrop = True
End Sub
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e _
As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
TextBox1.Text = "Hello World"
' Begin dragging by calling the DoDragDrop method.
' OLEStartDrag is replaced by arguments on the method.
TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy)
End Sub
Private Sub TextBox2_DragEnter(ByVal sender As Object, ByVal e _
As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragEnter
' Make sure that the format is text.
If (e.Data.GetDataPresent(DataFormats.Text)) Then
' Allow drop.
e.Effect = DragDropEffects.Copy
Else
' Do not allow drop.
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e _
As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop
' Copy the text to the second TextBox.
TextBox2.Text = e.Data.GetData(DataFormats.Text).ToString
End Sub
Hinweise zum Durchführen einer Aktualisierung
Drag & Drop-Code kann nicht automatisch auf Visual Basic 2008 aktualisiert werden, sondern muss unter Verwendung des neuen Modells neu geschrieben werden. Jeglicher Drag & Drop-Code wird während des Aktualisierungsprozesses mit Aktualisierungswarnungen markiert.
Siehe auch
Weitere Ressourcen
Drag & Drop-Operationen und Unterstützung der Zwischenablage