public static int saveTree(TreeView tree, string filename)
{
ArrayList al = new ArrayList();
foreach (TreeNode tn in tree.Nodes)
{
al.Add(tn);
}
Stream file = File.Open(filename, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
try
{
bf.Serialize(file, al);
}
catch (System.Runtime.Serialization.SerializationException e)
{
MessageBox.Show("Serialization failed : {0}", e.Message);
return -1;
}
file.Close();
return 0;
}
public static int loadTree(TreeView tree, string filename)
{
if (File.Exists(filename))
{
Stream file = File.Open(filename, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
object obj = null;
try
{
obj = bf.Deserialize(file);
}
catch (System.Runtime.Serialization.SerializationException e)
{
MessageBox.Show("De-Serialization failed : {0}", e.Message);
return -1;
}
file.Close();
ArrayList nodeList = obj as ArrayList;
foreach (TreeNode node in nodeList)
{
tree.Nodes.Add(node);
}
return 0;
}
else return -2;
}
Сериализация TreeView
Есть проблема над которой бьюсь уже не первую неделю!!
Есть рабочая сериализация treeview,однако она почему-то (по неизвестный мне причинам) не сериализует stateimageindex (да и вообще любые иконки, связанные с узлами) для узлов. Кто-нибудь может помочь или дать пинок в нужном направлении?) Надеюсь на вашу помощь, заранее спасибо!
Код:
http://ifolder.ru/23389835 - ссылка на проект (не смог прикрепить к посту, ошибку какую-то выдает менеджер вложений)
Не знаю, поможет ли это в данном случае. Но работать будет быстрее.
Код:
using System.Collections.Generic;
List<TreeNode> list = new List<TreeNode>();
List<TreeNode> list = new List<TreeNode>();
И что за возврат из методов неведомых значений 0, -1, -2? Что они означают? Для чего так сделано? Это не путь C#! Бросайте исключения. Либо используйте перечисления вместо магических чисел.
Зачем вообще сериализовывать TreeView? На мой взгляд лучше создать свои структуры данных, отражающих дерево (и по которым TreeView и строится) - их и сериализовывать.