Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сериализация TreeView

70K
08 мая 2011 года
mr.nothing
1 / / 08.05.2011
Здрасте гуру!
Есть проблема над которой бьюсь уже не первую неделю!!
Есть рабочая сериализация treeview,однако она почему-то (по неизвестный мне причинам) не сериализует stateimageindex (да и вообще любые иконки, связанные с узлами) для узлов. Кто-нибудь может помочь или дать пинок в нужном направлении?) Надеюсь на вашу помощь, заранее спасибо!

Код:
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;
        }

http://ifolder.ru/23389835 - ссылка на проект (не смог прикрепить к посту, ошибку какую-то выдает менеджер вложений)
297
08 мая 2011 года
koodeer
1.2K / / 02.05.2009
А если использовать дженерики?
Не знаю, поможет ли это в данном случае. Но работать будет быстрее.
 
Код:
using System.Collections.Generic;

List<TreeNode> list = new List<TreeNode>();




И что за возврат из методов неведомых значений 0, -1, -2? Что они означают? Для чего так сделано? Это не путь C#! Бросайте исключения. Либо используйте перечисления вместо магических чисел.
5
09 мая 2011 года
hardcase
4.5K / / 09.08.2005
Зачем вообще сериализовывать TreeView? На мой взгляд лучше создать свои структуры данных, отражающих дерево (и по которым TreeView и строится) - их и сериализовывать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог