Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SERIALIZER UNE ARBORESCENCE TREEVIEW


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : serialiser, serialisation, treeview Niveau : Initié Date de création : 23/09/2005 Date de mise à jour : 26/10/2005 10:00:40 Vu : 12 066

Note :
8,83 / 10 - par 6 personnes
8,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note


Description

Bonjour, j'ai dernièrement voulu sérialiser les Nodes d'une Treeview et je suis tombé sur un sujet assez épineux. En effet la classe TreeNodeCollection (qui contient des objets TreeNode)  ne se sérialize pas, et encore moins en Xml. Du coup, j'ai rusé en sauvegardant tous les noeuds dans un ArrayList(eq Vector), car la classe TreeNode est sérializable et la classe ArrayList aussi !
 

Source

  • using System.Runtime.Serialization.Formatters.Binary;
  • using System.Runtime.Serialization;
  • private void SauveTreeView(TreeView treeView, string FileName)
  • {
  • ArrayList ListeNoeuds = new ArrayList(); //instanciation de la liste
  • FileStream fichier = File.OpenWrite(FileName); //Ouverture du fichier en écriture
  • BinaryFormatter serializer = new BinaryFormatter(); // instanciation du serializeur binaire
  • foreach (TreeNode noeud in (treeView.Nodes)) //ajout de chaque noeud dans la liste
  • {
  • ListeNoeuds.Add(noeud);
  • }
  • serializer.Serialize(fichier, ListeNoeuds); // Serialization de la liste dans le fichier
  • fichier.Close(); //Fermeture du fichier
  • }
  • private void ChargeTreeView(TreeView treeView, string FileName)
  • {
  • FileStream fichier = File.OpenRead(FileName); //ouverture du fichier à charger
  • BinaryFormatter serializer = new BinaryFormatter();// instanciation du serializeur binaire
  • treeView.Nodes.Clear(); //efface tout les noeuds de l'arborescence
  • treeView.BeginUpdate(); //à mettre avant l'ajout de beaucoup de noeuds
  • ArrayList ListeNoeuds = (ArrayList)serializer.Deserialize(fichier); //Deserialisation dans la liste
  • foreach (TreeNode node in ListeNoeuds) //ajout de chaque noeud dans l'arborescence
  • {
  • treeView.Nodes.Add(node);
  • }
  • treeView.EndUpdate(); //à mettre après l'ajout
  • fichier.Close(); //Fermeture du fichier
  • }
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;


private void SauveTreeView(TreeView treeView, string FileName)
{
     ArrayList ListeNoeuds = new ArrayList();  //instanciation de la liste
     FileStream fichier = File.OpenWrite(FileName); //Ouverture du fichier en écriture

     BinaryFormatter serializer = new BinaryFormatter(); // instanciation du serializeur binaire

     foreach (TreeNode noeud in (treeView.Nodes)) //ajout de chaque noeud dans la liste
     {
          ListeNoeuds.Add(noeud);
     }

     serializer.Serialize(fichier, ListeNoeuds); // Serialization de la liste dans le fichier
     fichier.Close(); //Fermeture du fichier
}

private void ChargeTreeView(TreeView treeView, string FileName)
{

     FileStream fichier = File.OpenRead(FileName); //ouverture du fichier à charger
     BinaryFormatter serializer = new BinaryFormatter();// instanciation du serializeur binaire

     treeView.Nodes.Clear(); //efface tout les noeuds de l'arborescence
     treeView.BeginUpdate(); //à mettre avant l'ajout de beaucoup de noeuds

     ArrayList ListeNoeuds = (ArrayList)serializer.Deserialize(fichier); //Deserialisation dans la liste

     foreach (TreeNode node in ListeNoeuds) //ajout de chaque noeud dans l'arborescence
     {
          treeView.Nodes.Add(node);
     }

     treeView.EndUpdate(); //à mettre après l'ajout
     fichier.Close(); //Fermeture du fichier

}

Historique

26 octobre 2005 09:59:17 :
Problème de syntaxe
26 octobre 2005 10:00:40 :
Ajout des namespaces

Commentaires et avis

signaler à un administrateur
Commentaire de sebmafate le 24/09/2005 10:49:58 administrateur CS

fallait y penser ;)

signaler à un administrateur
Commentaire de poppyto le 24/09/2005 11:42:32 administrateur CS

Héhé oui surtout que j'avais vraiment pas envie de faire une sauvegarde à "l'ancienne" en recréant l'arbre dans un fichier texte sniff.
Je t'enverrai le soft la semaine prochaine Seb, ça peut t'intéresser :). D'ailleurs je me suis servis de tes tutos pour faire des contrôles utilisateur 8).

signaler à un administrateur
Commentaire de sebmafate le 24/09/2005 12:14:59 administrateur CS

c'est donc toi qui m'a lu :p
j'attends ton soft avec impatience ;)

signaler à un administrateur
Commentaire de poppyto le 24/09/2005 12:20:06 administrateur CS

lol "l'unique" lecteur ! C'est une mise à jour en .net du soft qui est sur mon site pour faire les cours (en C++). Je me suis amusé à faire les contrôles utilisateurs car c'est bien balaise de pouvoir voir le rendu dans VS, et surtout le nombre de ligne de code est divisé par 10 :-)

signaler à un administrateur
Commentaire de Lutinore le 25/09/2005 07:47:51 administrateur CS

Pour charger un fichier XML dans un TreeView y'a cette source qui est sympa: http://www.csharpfr.com/code.aspx?ID=30683

signaler à un administrateur
Commentaire de poppyto le 25/09/2005 13:54:10 administrateur CS

Elle est sympa mais il manque quand même la fonction pour sauvegarder ;)

signaler à un administrateur
Commentaire de gazza le 26/09/2005 01:06:40

Bonsoir tout le monde, je serais aussi initeressé pour le soft si jamais tu peux me l'envoyé aussi... ou le publié sur se site avec les sources... se serait trop sympa... merci d'avance...
a+

signaler à un administrateur
Commentaire de claudetom le 19/12/2006 16:53:41

Ce code est pas mal pour la restitution et la sauvegarde de l'ensemble d'un treeview.

Mais à l'utilisation j'ai quand même un souci, il ne restitue pas les bonnes icones attachées aux nodes :
Dans mon cas j'ai plusieurs groupes de nodes avec sur chacun des groupes une icone de couleurs différentes, a la restitution tout les groupes ont la même icone en l'occurrence la 1ere icone du premier groupe ?

signaler à un administrateur
Commentaire de poppyto le 19/12/2006 17:11:05 administrateur CS

(pas testé)Il ne devrait pas y avoir de soucis, est-ce que la propriété ImageIndex est restituée (TreeNode) ?
En tout cas la sérialization l'enregistre...(reflector)

signaler à un administrateur
Commentaire de surfzoid le 17/04/2008 19:16:55

Marche plutôt nickel, mais question, ont peut sérialiser dans du XML ou du texte, plutôt que du binaire ?

signaler à un administrateur
Commentaire de poppyto le 17/04/2008 19:46:47 administrateur CS

Essaye de voir avec la classe XmlSerializer ^^

signaler à un administrateur
Commentaire de surfzoid le 18/04/2008 09:25:07

Merci.

signaler à un administrateur
Commentaire de TsukiShiro le 15/05/2008 09:23:58 9/10

Salut poppyto merci pour t'as source. je débute en vb.net et ça m'as beaucoup aidé à piger la sérialisation.

J'ai trouvé la traduction vb.net de ta source (même les commentaires sont les mêmes xD)mais voila, seul les nom des noeuds sont sauvé ainsi que les relations parent/enfant, je ne retrouve pas le .tag du treeview dans le fichier bin.
A la désérialisation j'ai donc des noeuds vides avec juste un nom =(.

J'ignore si cela vient du langage ou d'autre chose merci d'avance de votre aide.

signaler à un administrateur
Commentaire de poppyto le 15/05/2008 10:22:26 administrateur CS

Il faut que l'objet dans .tag soit serializable ( this.userData.GetType().IsSerializable ) et faire le nécessaire s'il ne l'est pas...

signaler à un administrateur
Commentaire de TsukiShiro le 15/05/2008 10:41:41

heu ouai j'ai pas mis <sérializable> devant -_- l'erreure...
Heuresement que je suis débutant sinon j'me le pardonnerait pas xD
Merci beaucoup sa à bien l'air de marcher =)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

TreeView : selection multiple [ par rintchu ] Salut,est il possible dans un treeview de selectionner plusierus noeud a la fois en restant appuyer sur la touche control par exemple.QQn peut il m'ai scrollbar treeview [ par chessandmat ] Bonjour,J'ai un treeview scrollable mais je n'arrive pas a recuperer la valeur de ce scrollbar.Comment faire ?Merci d'avance Treeview [ par streetlife ] J'ai un réèl problème avec un composant treeview si quelqu'un pouvait jetter un coup d'oeil j'ai laisser mon problème en tant que source C#:http://www Comment remplir un treeview avec base de données ? [ par shadowgirl ] Salut à tous, J'ai une application à faire avec un treeview.Ce treeview je voudrais le remplir avec des données qui se trouvent dans ma base de donnée insérer un tableau en tant que treenode d'un treeview [ par benkawet ] Voila sa fait deja plusieurs jours que je cherche une réponse ... mais toujours rien trouvé .J'utilise Visual Studio pour creer une page .aspx en util Recherche aide ou code pour gestion d'un Treeview [ par shadowgirl ] Salut à tous, Je cherche quelqu'un qui pourrait m'aider ou me passer du code pour gérer un Treeview, avec la classe Treeview. (Expand, selected ....) Treeview et Scrollbar [ par tchoucky ] Bonjour,j'ai un petit problème avec une barre de defilement gérée automatiquement dans un treeview. En effet, la barre horizontale est presente, on ne probléme sélection node dans un treeview en C# [ par rifi ] J'ai créé un TreeView avec différents nodes, monprobléme et que je souhaite sélectionner un des Nodes lorsque je clique sur un bouton. mais je n'ai t Treeview et défilement [ par tchoucky ] Salut,j'aimerais savoir comment gérer le défilement d'un treeview lors d'un drag and drop.En effet, comment atteindre un noeud qui n'est pas visible c attribut node de treeview [ par Ryang ] Je cherche comment recuperer le nom de chaque node dans un treeview, pour pouroir en selectionner un selon un nom que l'on pourrait entrer dans un tex


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.