Сохранить
// Сохранить в
private void button3_Click(object sender, EventArgs e)
{
this.treeView1.Save(jsonFilePath);
}
Прочитать
// Прочитать
private void button4_Click(object sender, EventArgs e)
{
this.treeView2.Nodes.Clear();
this.treeView2.Load(jsonFilePath);
}
Класс TreeRepository.cs
public static class TreeRepository
{
public class DataNode
{
public string Text { get; set; }
public bool IsChecked { get; set; }
// public bool IsExpanded { get; set; }
public bool IsExpanded { get; set; }
public bool IsSelected { get; set; }
public List<DataNode> Children { get; set; }
}
public static List<DataNode> LoadDataNodes(string jsonFilePath)
{
var json = System.IO.File.ReadAllText(jsonFilePath);
var dataNodes = JsonConvert.DeserializeObject<List<DataNode>>(json);
return dataNodes;
}
public static void Load(this TreeView treeView, string jsonFilePath)
{
treeView.Nodes.Load(LoadDataNodes(jsonFilePath));
}
public static void Load(this TreeNodeCollection nodes, List<DataNode> dataNodes)
{
foreach (var dataNode in dataNodes)
{
var treeNode = nodes.Add(dataNode.Text);
treeNode.Checked = dataNode.IsChecked;
treeNode.IsExpanded = dataNode.IsExpanded;
if (dataNode.Children != null && dataNode.Children.Count > 0)
{
Load(treeNode.Nodes, dataNode.Children);
}
if (dataNode.IsSelected)
{
treeNode.IsSelected = true;
}
}
}
public static List<DataNode> GetDataNodes(this TreeView treeView)
{
var dataNodes = new List<DataNode>();
AddNodesToList(treeView.Nodes, dataNodes);
return dataNodes;
}
private static void AddNodesToList(TreeNodeCollection nodes, List<DataNode> dataNodes)
{
foreach (TreeNode node in nodes)
{
var dataNode = new DataNode
{
Children = new List<DataNode>(),
IsChecked = node.Checked,
IsExpanded = node.IsExpanded,
IsSelected = node.IsSelected,
Text = node.Text
};
dataNodes.Add(dataNode);
if (node.Nodes.Count > 0)
{
AddNodesToList(node.Nodes, dataNode.Children);
}
}
}
public static void Save(this TreeView treeView, string jsonFilePath)
{
var dataNodes = treeView.GetDataNodes();
var json = JsonConvert.SerializeObject(dataNodes, Formatting.Indented);
System.IO.File.WriteAllText(jsonFilePath, json);
}
}
В выражении
treeNode.IsExpanded = dataNode.IsExpanded;
Ошибка: CS0200 Невозможно присвоить значение свойству или индексатору "TreeNode.IsExpanded" — доступ только для чтения.
Как исправить ошибку?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть класс мира, в котором находится словарик форм жизниКаждый Update в классе мира вызывается foreach, который перебирает все формы жизни и производит...
разбираюсь в паттерне MVVM, подскажите, как правильно реализовать связь между коллекциями Model и ViewModelДопустим, в Model у меня есть коллекция, которая...
Столкнулся с такой проблемой: Есть космический корабль, у него есть дочерние объекты - орудия на нужных позицияхНо пули спавнятся не там где...