2011-08-17 42 views
1

我使用下面的代码将xml显示为树视图。我想用新值刷新树视图

现在我想在刷新时通过在同一个窗口中使用一些文本框来编辑xml。当我使用文本框编辑和保存文件时,我想用该新值来刷新树视图。

我该怎么办?

我使用treeview1.update();treeview1.refresh();但它不起作用。

我用下面的代码部分:

private void button1_Click(object sender, EventArgs e) 
{ 
    XmlDataDocument xmldoc = new XmlDataDocument(); 
    XmlNode xmlnode ; 
    FileStream fs = new FileStream("tree.xml", FileMode.Open, FileAccess.Read); 
    xmldoc.Load(fs); 
    xmlnode = xmldoc.ChildNodes[1]; 
    treeView1.Nodes.Clear(); 
    treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name)); 
    TreeNode tNode ; 
    tNode = treeView1.Nodes[0]; 
    AddNode(xmlnode, tNode); 
} 

private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) 
{ 
    XmlNode xNode ; 
    TreeNode tNode ; 
    XmlNodeList nodeList ; 
    int i = 0; 
    if (inXmlNode.HasChildNodes) 
    { 
     nodeList = inXmlNode.ChildNodes; 
     for (i = 0; i <= nodeList.Count - 1; i++) 
     { 
      xNode = inXmlNode.ChildNodes[i]; 
      inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); 
      tNode = inTreeNode.Nodes[i]; 
      AddNode(xNode, tNode); 
     } 
    } 
    else 
    { 
     inTreeNode.Text = inXmlNode.InnerText.ToString(); 
    } 
} 
+0

我怎么做,谢谢你许多。 – maduranga

回答

0

您可以创建树形视图保存更改后,全新的。为了重用现有的代码,你可以重构它一下:

private void button1_Click(object sender, EventArgs e) 
{ 
    this.FillTreeView(); 
} 
private void FillTreeView() 
{ 
    XmlDataDocument xmldoc = new XmlDataDocument(); 
    XmlNode xmlnode ; 
    FileStream fs = new FileStream("tree.xml", FileMode.Open, FileAccess.Read); 
    xmldoc.Load(fs); 
    xmlnode = xmldoc.ChildNodes[1]; 
    treeView1.Nodes.Clear(); 
    treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name)); 
    TreeNode tNode ; 
    tNode = treeView1.Nodes[0]; 
    AddNode(xmlnode, tNode); 
} 
private void AddNode(...) { ... } 

...并保存修改XML文件后,调用FillTreeView()

private void button2_Click(object sender, EventArgs e) 
{ 
    // [Save changes to file] 
    this.FillTreeView(); 
} 
+0

Stephan是对的,但请注意''XmlDataDocument'类已过时http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/2406023f-59b4-432b-8e4d-afd551d2f890/我推荐使用'XmlDocument'类或Linq到XML。有关XmlDocument的一个示例,请从年轻的Fang检查此答案http://forums.asp.net/p/1062335/1528035.aspx –