Drag & drop entre picture box

Soyez le premier à donner votre avis sur cette source.

Vue 8 573 fois - Téléchargée 504 fois

Description

Source de base : http://msdn.microsoft.com/fr-fr/library/aa289508(en-us,VS.71).aspx#vbtchimpdragdropanchor5

Les modifications : Une "généralisation" du code en utilisant l'outil sender.

Rien de bien spécial mais je pense qu'elle pourrai aidé certain débutants (comme moi)

Source / Exemple :


Public Class Form1
    Dim m_MouseIsDown As Boolean
    Dim sender2 As Object

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.PictureBox1.AllowDrop = True
        Me.PictureBox2.AllowDrop = True
        Me.PictureBox3.AllowDrop = True
    End Sub

#Region "Mouse Down"
    Private Sub Mouse_Down(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown, PictureBox2.MouseDown, PictureBox3.MouseDown

        If Not sender.Image Is Nothing Then 'On verifie que la picturebox source n'est pas vide
            m_MouseIsDown = True
        End If
    End Sub
#End Region

#Region "Mouse Move"
    Private Sub Mouse_Move(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove, PictureBox2.MouseMove, PictureBox3.MouseMove
        If m_MouseIsDown = True Then
            sender2 = sender 'On recupére le nom d'objet de la picturebox source
            sender.DoDragDrop(sender.Image, DragDropEffects.Move) 'On lance l'operation de Drag&Drop de l'image

        End If
        m_MouseIsDown = False
    End Sub
#End Region

#Region "DragEnter"
    Private Sub Drag_Enter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragEnter, PictureBox2.DragEnter, PictureBox3.DragEnter
        If e.Data.GetDataPresent(DataFormats.Bitmap) Then

            e.Effect = DragDropEffects.Move
        Else
            e.Effect = DragDropEffects.None 'Au cas ou il y a eu un probléme dans l'envoi de l'image
        End If
    End Sub
#End Region

#Region "DragDrop"
    Private Sub Drag_Drop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragDrop, PictureBox2.DragDrop, PictureBox3.DragDrop
        sender2.Image = Nothing 'On vide la picturebox source
        sender.Image = e.Data.GetData(DataFormats.Bitmap) 'on place l'image dans la picture box source
    End Sub
#End Region

End Class

Conclusion :


_ _ _ _|_. _
(_||_|(/_| | | || |
|/

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

J'ai tout activé, c'est bon. Les problèmes sont de type Late Binding.

sender.image
sender.DoDragDrop

Ps: Il n'y a pas l'ombre de sender.width dans mon code, pourquoi vouloir trouver des défaut en plus à la source, il y en a déjà bien assez ^^

Cordialement
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Je ne vois pas en quoi l'utilisation de sender est mauvaise.
Il faut cependant, vérifier son type et suivant le type, le caster pour l'utiliser.
Ajoute une Option Explicit et une Option Strict tu verras tout de suite les erreurs.
__
Kenji
Messages postés
129
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2009

Cependant, Sender n'est pas la bonne solution ... (je sais je suis un perroquet)
Messages postés
129
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2009

sender.image.PhysicalDimensions.Width
Messages postés
129
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2009

Ben en utilisant la POO...
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.