Probléme echange de noeud dans un treeview

Résolu
cs_Globinours Messages postés 65 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 26 août 2005 - 15 avril 2005 à 18:00
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 18 avril 2005 à 12:25
Je veux permettre de monter ou de descendre un noeud dans un Treeview à partir d'un menu contextuel.

Mais je n'arrive pas à échanger deux noeuds dans mon TreeView alors qu'à priori ça ne me parait pas insurmontable!

Je récupére le noeud qui dois être déplacé!



Si vous avez quelque chose faites moi signe ;)

7 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 avril 2005 à 20:24
Petit exemple avec 2 boutons (le changement de rang n'est pas géré) :

private void button_Up_Click(object sender, System.EventArgs e)
{
TreeNode selectedNode = treeView.SelectedNode;
if ( selectedNode != null && selectedNode.Index > 0)
{
treeView.BeginUpdate();
TreeNode parentNode = selectedNode.Parent;
int oldIndex = selectedNode.Index;
// suppression
selectedNode.Remove();
// insertion à l'ancine index-1
parentNode.Nodes.Insert(oldIndex - 1, selectedNode );
treeView.SelectedNode = selectedNode;
treeView.EndUpdate();
}
}

private void button_Down_Click(object sender, System.EventArgs e)
{
TreeNode selectedNode = treeView.SelectedNode;
int maxIndex = 0;

// détermine l'index maximum (cas différents suivant node racine ou pas)
if ( selectedNode.Parent == null )
maxIndex = treeView.Nodes.Count-1;
else
maxIndex = treeView.SelectedNode.Parent.Nodes.Count-1;

if ( selectedNode != null && selectedNode.Index < maxIndex)
{
treeView.BeginUpdate();
TreeNode parentNode = selectedNode.Parent;
int oldIndex = selectedNode.Index;
// suppression
selectedNode.Remove();
// insertion à l'ancine index+1
parentNode.Nodes.Insert(oldIndex + 1, selectedNode );
treeView.SelectedNode = selectedNode;
treeView.EndUpdate();
}
}

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
WormkeyP Messages postés 20 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 30 septembre 2010
15 avril 2005 à 18:10
TreeNode a=MyTreeView.Node[i];
TreeNode b=MyTreeView.Node[j];

MyTreeView.Node[i]=a;
MyTreeView.Node[j]=b;

Voila on a échangé les nodes i et j.
Il te rest plus qu'a déterminer correctement i et j.
J'éspère t'avoir aidé
0
cs_Globinours Messages postés 65 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 26 août 2005 1
15 avril 2005 à 19:58
J'ai déjà fait ça mais ça fonctionne pas!

En effet il ne supprime pas les anciens noeuds et pourtant j'utilise les bonne index!

Il sont affichés mais on ne peut pas agir dessus comme si le TreeView n'avait pas été actualisé!

Je vais réessayer mais j'y crois pas trop



merci de ta réponse
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
16 avril 2005 à 15:30
j'ai deja ecris un bout de code permettant de deplacer des TreeNode par glisser/deposer sur un meme TreeView, je ne suis pas chez moi la, mais si un tel code t'interesse, je pourrais te le poster plus tard
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Globinours Messages postés 65 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 26 août 2005 1
18 avril 2005 à 10:18
Je vais essayer le code de coq!

Merci



Par conrtre je ne suis pas intéressé par le Drag and Drop au sein d'un
Treeview! Car ça risque de me poser pas mal de problème de
vérification et c'est pas adapté à ce que je veux faire!

Merci quand même
0
cs_Globinours Messages postés 65 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 26 août 2005 1
18 avril 2005 à 11:59
Merci de l'aide mais en fait le problème venait d'autre chose mais le
code de coq m'a quand même bien aidé car il est un peu mieux que le
mien

En fait mon Treeview était trié et je ne pouvais donc pas faire d'Insert correct dessus
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 avril 2005 à 12:25
Oui c'est génant :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous