Сохранить узлы из дерева - PullRequest
       4

Сохранить узлы из дерева

1 голос
/ 07 декабря 2010

Я использую элемент управления treeview в своем приложении для Windows. В этом приложении есть кнопка, которая добавляет несколько узлов (корневой узел и дочерний узел). Теперь я хочу сохранить эту структуру и использовать ее при повторном открытии приложения.

Как мне это сделать?

1 Ответ

0 голосов
/ 07 декабря 2010

Вам необходимо выполнить следующие действия

1 - Серилизовать конструктор дерева с помощью BinaryFormatter, в качестве отправной точки см. Ниже

private Byte[] SerilizeQueryFilters()
    {
        BinaryFormatter bf = new BinaryFormatter();

        TreeNodeCollection tnc = treeView1.Nodes;

        List<TreeNode> list = new List<TreeNode>();
        list.Add(treeView1.Nodes[0]);


        using (MemoryStream ms = new MemoryStream())
        {
            bf.Serialize(ms, list);
            return ms.GetBuffer();

        }


    }

2 - Получив массив байтов, вы можетелибо сохраните его в базе данных, либо в файле.

3 - Если вы хотите заново создать дерево, вам необходимо десерилизовать сохраненные данные, если они находятся в базе данных, прочитать фактические байты и ввестимассив байтов [] или, если он находится в файле, загрузите файл и прочитайте все байты в массив байтов.

4- Когда вы получите фактические байты, вы можете десериализовать, как показано ниже кода

 private void DeSerilizeQueryFilters(byte[] items)
    {
        BinaryFormatter bf = new BinaryFormatter();

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

        try
        {
            using (MemoryStream ms = new MemoryStream())
            {
                ms.Write(items, 0, items.Length);
                ms.Position = 0;

                _list = bf.Deserialize(ms) as List<TreeNode>;



            }


        }
        catch (Exception ex)
        {
        }




    }

здесь вы можете видеть, что _list будет содержать фактический корневой узел, который был сериализован ранее, теперь, когда вы получили данные, вы можете восстановить свое дерево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...