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 Forms Discussion :

[Débutant(e)][VB.NET] Drag and drop entre 2 treeviews


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 16
    Points
    16
    Par défaut [Débutant(e)][VB.NET] Drag and drop entre 2 treeviews
    Bonjour,

    Je souhaite faire un drag and drop d'un treeview source à un treeview destinataire.
    Le problème c'est que je ne comprends pas trop comment s'articulent les différents événements à utiliser : dragdrop, dragenter, dodragdrop...
    Sur quel treeview se passe quel événement ?
    A quoi servent les handles dans ce cas précis ?

    J'ai regardé ce sujet : http://www.codeproject.com/vb/net/TreeViewDragAndDrop.asp#xx991167xx et ai essayé de l'utiliser en l'adaptant pour 2 treeviews mais je n'arrive pas à rendre mon treeview destinataire accessible même avec AllowDrop=True...

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Les drag drop se déroulent toujours de la même façon.
    Dans ton cas, l'opération s'initialise sur l'évènement ItemDrag

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub TreeView1_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles TreeView1.ItemDrag
     
            DoDragDrop(e.Item, DragDropEffects.Move)
     
    End Sub
    Tu gères les effets sur les évènements DragEnter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub TreeView1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView1.DragEnter, TreeView2.DragEnter
     
     If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
            e.Effect = DragDropEffects.Move
        Else
            e.Effect = DragDropEffects.None
        End If
     
    End Sub
    Dans l'évènement DragOver du treeview cible, tu dois récupérer la cible potentielle en passant par la position de la souris et GetNodeAt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub TreeView2_DragOver(ByVal sender As System.Object, ByVal e As DragEventArgs) Handles TreeView2.DragOver
     
        If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub
            Dim pt As Point = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
            Dim NodeCible As TreeNode = Me.TreeView2.GetNodeAt(pt)
            Dim NodeSource As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
            If Not (Me.TreeView2.SelectedNode Is NodeCible) Then Me.TreeView2.SelectedNode = NodeCible
            e.Effect = DragDropEffects.Move
     
    End Sub
    et enfin le déposer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Sub TreeView2_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView2.DragDrop
     
            If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub
            Dim NodeSource As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
            Dim NodeCible As TreeNode = Me.TreeView2.SelectedNode
            NodeSource.Remove()
            If NodeCible Is Nothing Then
                Me.TreeView2.Nodes.Add(NodeSource)
            Else
                NodeCible.Nodes.Add(NodeSource)
            End If
            NodeSource.EnsureVisible()
            Me.TreeView2.SelectedNode = NodeSource
     
    End Sub
    Désolé si mes explications sont plus que succintes mais là je n'ai pas trop le temps

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par bidou
    Désolé si mes explications sont plus que succintes mais là je n'ai pas trop le temps
    +1 succinct peut être mais modèle de minitutoriel efficace

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Effectivement merci Bidou

    Tout compte fait comme ton code ne marchait pas super bien ( ) je me suis repliée vers un drag&drop de treeview vers listbox et ça fonctionne bien.

    Pour te dire juste le truc bizarre : je sélectionne le noeud de la source je fais glisser vers la destination => impossible curseur "sens interdit" par contre glissement de la source vers un autre noeud d'elle-même entraîne bon résultat ie écriture dans le treeview destinataire...
    Je n'ai pas réussi à résoudre çà toute seule mais si quelqu'un se penche sur le problème je veux bien connaître la solution

  5. #5
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    tes deux treeview ont bien leurs propriétés AllowDrop égale à True ?

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    vi vi vérifié plusieurs fois

  7. #7
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    curieux, chez moi ca marche sans problème

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Résolu comment stp :

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    j'ai mis résolu parce que j'ai trouvé une autre solution (treeview->listbox), le 2è problème soulevé n'est pas résolu...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] [VB.NET] Drag and drop entre 2 treeviews
    Par jorrie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/07/2012, 13h14
  2. [ASP.NET][C#] Drag and Drop entre 2 gridview
    Par hurricane dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/01/2008, 09h55
  3. [VB.net] Drag and drop dans une Treeview
    Par gégécap dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 11h05
  4. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 02h10
  5. Drag and Drop entre listbox
    Par zwoke dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/07/2004, 15h10

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