begin process at 2012 02 07 09:44:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > SERIALIZER UNE ARBORESCENCE TREEVIEW

SERIALIZER UNE ARBORESCENCE TREEVIEW


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :16 157

Auteur : poppyto

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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

 Sources du même auteur

Source .NET (Dotnet) OBTENIR LE PID PARENT D'UN PROCESSUS
Source avec une capture Source .NET (Dotnet) INTERFACE WEB SANS WINFORMS
Source .NET (Dotnet) TRANSFORMATION XSLT EN .NET 2.0

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONBANQUE par toutphp
Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONAPPLICATION par toutphp
Source avec Zip SOCKET CONNEXION CLIENT & SERVEUR par ziedto83
Source avec Zip Source .NET (Dotnet) FFMPEG.NET : WRAPPER .NET DE FFMPEG par MasterShadows
Source avec Zip Source .NET (Dotnet) ATTACHER, CRÉER ET SAUVEGARDER UNE BASE DE DONNÉES SQL SERVE... par Alvepinai

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) EXPLORATEUR DE DOSSIERS ET FICHIERS par Yanith
Source .NET (Dotnet) [XML] SERIALISER UN DICTIONARY GÉNÉRIQUE par TheOnlyMaX
Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source avec Zip Source .NET (Dotnet) DESSINER EN XML par Yxion
Source avec Zip Source avec une capture Source .NET (Dotnet) XML LOADER par damned3

Commentaires et avis

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

fallait y penser ;)

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).

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 ;)

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 :-)

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

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 ;)

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+

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 ?

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)

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 ?

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

Essaye de voir avec la classe XmlSerializer ^^

Commentaire de surfzoid le 18/04/2008 09:25:07

Merci.

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.

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...

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

serialisation en C# [ par lason20 ] salut tout le monde cette fonction ci dessous est écrite en C++ qui permet serialiser et deserialiser un archive de données je veux la convertir en C récupérer un treeviewItem à partir de son contenu [ par yayasam ] Salut tous le monde, j'ai un gros souci avec les treeviewItem et les TreeView si quelqu'un aura une idée je le serai reconnaissante . en fait sur mon récupérer le dernier emplacement d'un treeviewItem dans un Treeview [ par yayasam ] salut tous le monde, dans mon projet j'affiche un treeview dans le quel j'affiche une certaine arborescence des répértoires et de sous répertoire, les étendre un TreeViewItem automatiquement [ par yayasam ] Bonjour, j'ai un TreeView que je remplie d'une liste de treeViewItem à partir d'une collection ("en utilisant le binding), j'ai associé à ce TreeView Serialisation, DataGridView [ par anas06042009 ] Bj a tous, je suis débutante en C#, je dois faire une appli(winform) qui permet d'enregistrer et de récuperer un questionnaire dans un fichier XML (d TreeView et XML [ par breizhgatch ] HEllo. J'ai un TreeView qui affiche un doc XML mais en plus simplifié. Je cherche un moyen d'associer chaque TreeNode au noeud XML auquel il correspo cour c# (la serialisation) [ par dalimrabet ] salut tout le monde [^^happy13] svp je veux me renseigner est ce que il existe un cour du c# sur la serialisation des objets (la persistance des objet Gérer un Treeview [ par medfourati ] Salut tout le monde, Je dispose d'un Treeview et des boutons dynamiques. SVP, je veux savoir comment récupérer le texte d'un noeud sélectionné dans un Treeeview dans mdi parent [ par Spawn3107 ] Bonjour tout le monde, j'ai un formulaire mdi parent dans l'application avec un menu et une treeview. J'aimerais bien que cette Treeview reste visibl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 13,182 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales