Fonction de glisser-déplacer pour les utilisateurs de Visual Basic 6.0
Mise à jour : novembre 2007
Le modèle permettant d'implémenter l'édition par glisser-déplacer dans Visual Basic 2008 est totalement différent du modèle Visual Basic 6.0.
Différences conceptuelles
Dans Visual Basic 6.0, l'édition par glisser-déplacer peut s'effectuer de deux méthodes différentes : le glissement standard, qui permet de faire glisser des éléments entre les contrôles sur un formulaire, et le glissement OLE, qui permet de faire glisser des éléments entre formulaires et applications.
Dans Visual Basic 2008, un seul modèle d'édition par glisser-déplacer est utilisé. Il est semblable au glissement OLE, mais les noms et les paramètres des méthodes et des événements de glisser-déplacer sont différents, tout comme le modèle d'événement.
Modifications du code pour la fonction de glisser-déplacer
Modifications du code pour glisser-déplacer du texte
L'exemple suivant montre les différences de code pour déplacer du texte d'un contrôle TextBox à un autre :
' 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
Mettre à niveau des remarques
Le code glisser-déplacer ne peut pas être automatiquement mis à niveau vers Visual Basic 2008 ; vous devez le réécrire en utilisant le nouveau modèle. Tout code glisser-déplacer est marqué par des avertissements de mise à niveau pendant le processus de mise à niveau.
Voir aussi
Autres ressources
Opérations glisser-déplacer et prise en charge du Presse-papiers