begin process at 2012 02 11 22:03:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > DRAG & DROP ENTRE PICTURE BOX

DRAG & DROP ENTRE PICTURE BOX


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Source .NET ( DotNet ) Niveau :Débutant Date de création :03/04/2009 Date de mise à jour :03/04/2009 20:04:20 Vu / téléchargé :3 398 / 241

Auteur : quentin0590

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Source de base : http://msdn.microsoft.com/fr-fr/library/aa289508(e n-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

  • 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
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

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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 avril 2009 20:01:19 :
La conclusion en ASCII ART ^^
03 avril 2009 20:03:36 :
ASCII ART
03 avril 2009 20:04:20 :
ASCII ART

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

Commentaires et avis

Commentaire de Renfield le 03/04/2009 10:40:19 administrateur CS

ton drag&drop fonctionne avec tous les boutons de la souris ? c'est pas très standard.

j'ai peur de pas saisir le role de m_MouseIsDown
pas possible, plutot, de tester l'etat du bouton en utilisant les parametres recus dans l'event MouseMove ?

Commentaire de BadoqueAlex le 03/04/2009 12:36:56 5/10

On utilise pas l'objet Sender !! Mauvaise habitude les liaisons tardives ... 5/10

Pour rappel :

Implicit Conversion : Error
Late Binding : Error
Implicit type : Error

pour des projets mieux développés avec moins d'erreurs en debug.

Commentaire de quentin0590 le 03/04/2009 19:58:11

Comme inscrit dans la description la source n'est pas de moi c'est une adaptation à mes besoin. ^^

Pour le m_MouseIsDown c'est pour que le drag&Drop ne soit possible qu'en appuyant sur le bouton et en déplaçant la souris.

Pour le test de l'état des boutons tu pense à quoi ?

Pour le sender je ne sais pas quoi utiliser d'autre. Je suis débutant.


Implicit Conversion : Error
Late Binding : Error
Implicit type : Error

Euh.... pourrai-tu m'eclairé ?

Cordialement

Commentaire de BadoqueAlex le 03/04/2009 22:42:31

Dans les propriétés de ton projet, dans les options de compilation, tu peux définir la rigueur avec laquelle du va programmer, en autorisant ou non les conversion implicites :

Les convertions implicites : écrire (me.height/2)-(button1.height/2) = FAUX au lieu de CType((me.height/2)-(button1.height/2),Integer).

Les liaisons tardives : sender.width = FAUX (Liaison tardive toute liaison étant faite lors de l'execution du code et non par la programmation)

etc.

Commentaire de quentin0590 le 04/04/2009 06:38:04

Merci,

Pour ce qui est des liaisons tardives avec le sender je ne vois pas comment je pourrai faire autrement, à part en créant un sub pas évent et par picture box. (ce que je n'ai pas fait dans mon projet original qui contient plus de 50 picture box)

Je suis cependant ouvert à tout conseil.

Cordialement quentin0590

Ps: je vais activer ces options dans lors de la compilation.

Commentaire de Renfield le 04/04/2009 07:47:40 administrateur CS

sender.width

sender est de type Object
de fait, il ne propose pas de propriété Width

casts le dans le type PictureBox...

Commentaire de quentin0590 le 04/04/2009 13:54:43

Je n'ai pas de sender.width dans mon code. J'ai sender.image et sender.DoDragDrop

J'imagine que le problème est le même, sender et de type objet et ne propose pas image et DodragDrop ?

Comment corrigé cette erreur ?
Qu'est ce que caster ?

Cordialement quentin0590

Commentaire de BadoqueAlex le 04/04/2009 13:56:03

Ben en utilisant la POO...

Commentaire de BadoqueAlex le 04/04/2009 13:56:30

sender.image.PhysicalDimensions.Width

Commentaire de BadoqueAlex le 04/04/2009 13:57:13

Cependant, Sender n'est pas la bonne solution ... (je sais je suis un perroquet)

Commentaire de Charles Racaud le 04/04/2009 15:02:15

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

Commentaire de quentin0590 le 04/04/2009 15:41:22

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales