ツリービューのツリーノードを保存してロードしようとしましたが、次のようにツリーノードのリストでツリーを作成しました:
[Serializable]
public class Tree : List<TreeNode>
{
public void Save()
{
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(Tree));
System.IO.FileStream s = new System.IO.FileStream(Application.StartupPath + "\\nodes.xml", System.IO.FileMode.Create);
x.Serialize(s, this);
s.Flush();
s.Close();
}
public static Tree Load()
{
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(Tree));
System.IO.FileStream s = new System.IO.FileStream(Application.StartupPath + "\\nodes.xml", System.IO.FileMode.OpenOrCreate);
Tree tree = x.Deserialize(s) as Tree;
s.Close();
return tree;
}
}
次に、保存ボタンに次のように書きました。
private void SaveButton_Click(object sender, EventArgs e)
{
this.SaveButton.Enabled = false;
Tree tree = new Tree();
foreach (TreeNode treeNode in this.treeView1.Nodes)
{
tree.Add(treeNode);
}
tree.Save();
MessageBox.Show("Saved Successfully.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.SaveButton.Enabled = true;
}
ロードされたフォームでは、これを使用しました:
private void Form1_Load(object sender, EventArgs e)
{
Tree tree = Tree.Load();
//Process Tree
foreach (TreeNode node in tree)
{
TreeNode treeNode=new TreeNode(node.Text);
this.treeView1.Nodes.Add(node);
}
//End Process Tree
私はそれ以上何もしませんでしたし、nodes.xml が正しくないと思います.xml ファイルを作成したい場合、そこに何を書くべきかわかりません.これを機能させるにはどうすればよいですか? 無効な操作例外エラーがあります