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 / Exemple :
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
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.