我想用新值刷新treeview

本文关键字:刷新 treeview 新值 | 更新日期: 2023-09-27 18:05:43

我使用以下代码将xml显示为树视图。

现在我想刷新当我编辑xml使用一些文本框在同一窗口。当我使用文本框编辑和保存文件时,我想用新值刷新treeview。

我该怎么做?

我使用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();
    }
}

我想用新值刷新treeview

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

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();
}