@vetalmatitskiy
testing engineer

Где хранятся данные дерева TreeView в Visual Studio и можно ли все дерево сериализировать?

Доброго дня, уважаемые гуру .net
пытаюсь сделать двухуровневый список на базе TreeView(WinForms). Через интерфейс дизайнера форм можно редактировать узлы дерева, но как получить к ним доступ программно не смог понять. Кроме того хотел бы после редактирования в форме приложения весь список узлов сохранить в файл(базу данных). Есть ли у визуальных компонентов и конкретно TreeView встроенная возможность сохранить состояние объекта во внешнее хранилище или какой метод можно применить для этого?
  • Вопрос задан
  • 606 просмотров
Пригласить эксперта
Ответы на вопрос 1
Neuroware
@Neuroware
Программист в свободное от работы время
Доступ к узлам идет через Nodes. Сериализовать можно. Втроенной функции загрузки\сохранения у TreeView нет.
Я для этого использую таки функции:
public void SaveTree(TreeView tree, string filename)
        {
            using (Stream file = File.Open(filename, FileMode.Create))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(file, tree.Nodes.Cast<TreeNode>().ToList());
            }
        }

        public void LoadTree(TreeView tree, string filename)
        {
            using (Stream file = File.Open(filename, FileMode.Open))
            {
                BinaryFormatter bf = new BinaryFormatter();
                IEnumerable<TreeNode> obj = (IEnumerable<TreeNode>)bf.Deserialize(file);
                if (obj==null )
                {
                    obj = new TreeNode[0];
                }
                if (obj.Count()>0)
                {
                    TreeNode[] nodeList = (obj as IEnumerable<TreeNode>).ToArray();
                    tree.Nodes.AddRange(nodeList);
                }
            }
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы