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 :

[C# Treeview] sauvegarde treenode problème Expand()


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Par défaut [RESOLU][C# Treeview] sauvegarde treenode problème Expand()
    Bonjour.

    Voilà j'ai un petit problème qui me complique bien la vie...

    J'ai dans mon application un treeviex sur plusieurs niveaux. Pour une raison dont je ne peux me passer, arrivé à un certain traitrement, je suis onbligé de sauvagarder tous les noeuds de mon Treeview (pour se faire je copiele noeud racine), effacer tous les noeud du Treeview, faire mon traitement et remettre le noeud que j'ai sauvegardé.

    Cela fonctionne, d'autant que j'ai des cases à cocher sur les noeuds, et elles le restent même après l'insertion de la copie, mais le problème c'est que tous les noeuds qui étaient ouverts (Expanded) avant la copie, ne le sont plus après. Ce qui est pas mal ennuyeux pour l'utilisateur qui doit à chaque fois se rappeler sur quel noeud il était et qui doit à chaque fois le rouvrir.

    Savez-vous comment je porrais faire pour que lors de l'insertion du noeud, le Treeview se restructure comme avant?

    Voici mon bout de code:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    private void exemple()
    		{
    			Treenode tempRacine  = null ;
     
    			// Sauvegarder les noeud de l'arbre
    			if(treeview1.Nodes[0] != null && treeview1.Nodes.Count != 0)
    				tempRacine = (LevelTreeNode) treeview1.Nodes[0].Clone() ;
     
    			// Effacer les noeuds qui y sont actuellement
     
    			// Traitement...
     
    			// ...
     
    			//remettre le noeud
    			if(tempRacine != null)
    			{
    				treeview1.Nodes.Add(tempRacine);
    			}
     
    			// Traitement...
     
    			//...
    		}



    Merci beaucoup!!!!

  2. #2
    Expert confirmé
    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
    Par défaut
    Ben il serait pas mal de verifier le Node qui a IsExpanded = true afin d'affecter Expanded à sa copie

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Par défaut
    Hello,

    C'est le cas, mais si je met que isExpanded = true sur le Node racine, les autres nodes ne le deviennent pas. Je pourrais faire une fonction récursive qui met tous les noeuds à Expanded, mais je trouve le traitement un peu lourd...

  4. #4
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Pour afficher tous les noeuds tu as ExpandAll() mais ce n'est pas vraiment ce que tu souhaites.
    A part faire du code, je ne vois pas d'autres solutions.

  5. #5
    Expert confirmé
    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
    Par défaut
    Je confirme j'ai fait quelques essais hier le_marsupilami_2001, tu n'y couperas pas désolé
    Mais en même temps c'est pas un code extraordinaire
    Crées 2 petites méthodes
    * String[] GetExpandedNodes(TreeNode[] mesNoeux)
    * TreeView SetExpandedNodes(Treeview monArbre, String[] mesNoeux)
    Que tu appelles en debut et fin de ta sauvegarde

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Par défaut
    Salut à tous!!!

    J'ai pu régler mon problème en écoutant vos conseils, de la sorte:

    (Je n'ai pas fait avec un tableau de string parce que je voulais rester un peu générique)

    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 static void copyExpandedSubNodesProprety(TreeNode tnSource, TreeNode tnDest)
    			{
    				if(tnSource.IsExpanded == true)
    					tnDest.Expand() ;
     
    				for(int i = 0 ; i<tnSource.Nodes.Count ; i++)
    				{
    					if(tnSource.Nodes[i].IsExpanded == true)
    						tnDest.Nodes[i].Expand() ; 
     
    					copyExpandedSubNodesProprety(tnSource.Nodes[i],tnDest.Nodes[i]) ;
    				}
    			}
    Merci de vos précieux conseils!!!

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

Discussions similaires

  1. TreeView Sauvegarder l'état
    Par Willthelegend dans le forum ASP.NET
    Réponses: 2
    Dernier message: 15/12/2008, 16h43
  2. Treeview et Treenode problems
    Par mehdi_scofield dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/08/2008, 15h26
  3. Sauvegarde csv problème de quote
    Par BenoitM dans le forum Excel
    Réponses: 2
    Dernier message: 10/07/2007, 00h07
  4. [VB.NET] [TreeView] expand node d'un treeview
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/04/2005, 16h21
  5. Problème avec Virtual Treeview
    Par bisounoursbleu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/12/2004, 15h37

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