我在Windows应用程序中使用了treeview控件。在此应用程序中,有一个按钮可添加多个节点(根节点和子节点)。现在我想保存这个结构,并在我再次打开应用程序时使用它。
我该怎么做?
答案 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将包含之前已经过服务的实际根节点,现在你获得了数据,你可以重新构建你的树。