2011-08-17 85 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 –