eguignier
Messages postés8Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention11 juin 2020
-
31 août 2012 à 18:06
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
3 sept. 2012 à 15:53
Bonjour à tous,
Je travaille avec le Visual C# Express 2010.
Je souhaite pouvoir déplacer des nœuds d'un treeview à un autre.
Pas de soucis d'un treeview sur lui même. Ca marche.
Par contre, d'un treeview à un autre, le drag & drop fonctionne mais le nœud est dupliqué 4 fois !!!!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Drap_Drop_2_TreeView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);
this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);
this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
}
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt);
NewNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
if (DestinationNode.TreeView != NewNode.TreeView) // bascule d'un treeView à un autre seulement
{
DestinationNode.Nodes.Add((TreeNode)NewNode.Clone());
DestinationNode.Expand();
//Remove Original Node
NewNode.Remove();
}
}
}
}
}
eguignier
Messages postés8Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention11 juin 2020 1 sept. 2012 à 09:28
J'ai trouvé !!!
Je donne l'information à ceux qui pourrait se faire piéger comme moi
En fait, lorsque j'ai dessiné l'interface, j'ai utilisé la fenêtre des propriétés pour créer les fonctions événementielles (Item_Drag, DragEnter, DragDrop) comme je le fais habituellement. Mais ici, comme je testais un bout de code trouvé sur le WEB, j'ai aussi recopier le paramétrage des événements cette fois-ci installé via le code :
this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);
this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);
this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
Donc, j'ai dupliqué sans m'en rendre compte les événements, c'est pourquoi mes noeuds se trouvaient duppliqués lors du Drap&Drop.
La solution consiste donc soit à paramétrer via l'interface Visual, soit par code, mais pas les 2 !!
J'ai donc supprimé le code ci-dessus et çà marche !!
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024656 1 sept. 2012 à 11:04
Bonjour,
c'est super de mettre ta propre solution, si tu veux bien cliquer sur le bouton "Réponse Acceptée", le sujet apparaitra résolu.
Pour maximiser les chances de réponses quand tu postes un code utilise les balise de codes (3ième icône en partant de la droite : ), ça met de la couleur et garde l'indentation, c'est beaucoup plus lisible.
J'avais vu ton post hier, mais n'ai pas eu le courage de lire le code...