从树视图中保存节点

时间:2010-12-07 10:01:06

标签: c# treeview

我在Windows应用程序中使用了treeview控件。在此应用程序中,有一个按钮可添加多个节点(根节点和子节点)。现在我想保存这个结构,并在我再次打开应用程序时使用它。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您需要做以下事情

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-如果要重新创建树,需要对保存的数据进行deserilize(如果它在数据库中),读取byte []数组中的实际字节和strore,或者如果它在文件中加载文件并将所有字节读入字节数组。

4-当你得到实际的字节时,你可以按照以下代码进行deserielize

 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将包含之前已经过服务的实际根节点,现在你获得了数据,你可以重新构建你的树。