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