Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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