IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[Drag and drop] - Retrouver la source


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut [Drag and drop] - Retrouver la source
    Bonjour,

    Je cherche à faire quelque chose de surement très simple. Je cherche à faire une opération de drag and drop. ça fonctionne plutôt bien dans l'ensemble seulement j'aimerai ajouter une petite complexité.

    Je m'explique j'ai deux listes (list1 et list2) et je peux mettre des éléments de list1 vers list2 et de list2 vers list1 mais je veux empêcher le drop de list2 vers... list2.

    voici le code pour ma list1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Private Sub List1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs)
            If e.LeftButton = MouseButtonState.Pressed Then
                Dim obj As New DataObject()
                    effects = DragDrop.DoDragDrop(List1, obj, DragDropEffects.Move)
            End If
        End Sub
    Et pour ma list2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Private Sub List2_DragOver(ByVal sender As System.Object, ByVal e As System.Windows.DragEventArgs)
     
            Dim listBox As ListBox = CType(e.Source, ListBox)
     
            If listBox IsNot Nothing AndAlso listBox.Name = "List1" Then
                e.Effects = DragDropEffects.None 
            Else
                e.Effects = DragDropEffects.Copy
            End If
     
        End Sub
    Mon souci c'est que e.Source contient List2 et idem pour l'objet sender. De plus, si j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Private Sub ListPanier_DragOver(ByVal sender As System.Object, ByVal e As System.Windows.DragEventArgs)
           e.Effects = DragDropEffects.None
        End Sub
    ça ne change absolument pas mon icone de drag and drop et celui-ci fonctionne toujours.... J'ai dû rater quelque chose ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If listBox IsNot Nothing AndAlso listBox.Name = "List1" Then
    Pourquoi ne pas mettre List2 ici ?

  3. #3
    Membre confirmé Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Désolé c'est une erreur de ma part j'avais mit "List1" pour faire un essai
    En faite mon problème est que listbox.Name est toujours égale à "List1" que je vienne de List1 ou de List2.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par Anto03 Voir le message
    En faite mon problème est que listbox.Name est toujours égale à "List1" que je vienne de List1 ou de List2.
    Heu là, c'est pas possible car cette ligne te permet d'être sur de récupérer la listbox sur laquelle tu es:

    Dim listBox As ListBox = CType(e.Source, ListBox)

  5. #5
    Membre confirmé Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Heu là, c'est pas possible car cette ligne te permet d'être sur de récupérer la listbox sur laquelle tu es:
    Ah ok justement moi j'aimerais récupérer la listbox de laquelle je viens (si c'est français ce que je viens d'écrire). Je veux juste récupérer la source de mon drag and drop !

  6. #6
    Membre émérite
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Par défaut
    Citation Envoyé par Anto03 Voir le message
    Je veux juste récupérer la source de mon drag and drop !
    Solution 1 : Référence la source dans une variable ayant une portée suffisante pour que la cible puisse y accéder. Tu mets à jour la variable en même temps que tu exécutes la méthode DoDragDrop.

    Solution 2 : Tu encapsules dans un DataObject un objet sérializable capable d'identifier la source, par exemple un String désignant le nom de la source, et tu ajoutes ce DataObject aux autres DataObject passés à la méthode DoDragDrop (en utilisant un tableau d'objets DataObject passé comme argument data).

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. Réponses: 3
    Dernier message: 14/03/2011, 10h05
  3. [SWT] Drag and Drop: lier la source à la cible
    Par benoit31 dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 28/04/2010, 16h31
  4. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  5. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo