Вам необходимо выполнить следующие действия
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 будет содержать фактический корневой узел, который был сериализован ранее, теперь, когда вы получили данные, вы можете восстановить свое дерево.