我用treeview显示xml里面的文件,但是在修改了xml之后,treeview控件显示不出来,只能重新打开程序才行,请教应该怎么做,以下附带treeview控件显示方法public void load()
{
    XmlDocument xml = new XmlDocument();
    xml.Load("PhoneBook.xml");
    XmlNode node = xml.DocumentElement;
    treeView.Nodes.Clear();
    lPhone.Clear();
    TreeNode card = treeView.Nodes.Add("联系人名单");
    foreach (XmlNode n1 in node.ChildNodes)
    {
        card.Nodes.Add(n1.FirstChild.InnerText);
        PhoneNumber pn = new PhoneNumber();
        foreach (XmlNode n in n1.ChildNodes)
        {
            switch (n.Name)
            {
                case "name":
                    pn.Name = n.InnerText;
                    break;
                case "mobile":
                    pn.MobileNumber = n.InnerText;
                    break;
                case "tel":
                    pn.TelephoneNumber = n.InnerText;
                    break;
                case "address":
                    pn.Address = n.InnerText;
                    break;
                default:
                    MessageBox.Show("错误");
                    break;
            }
        }
        lPhone.Add(pn);
    }
    card.Expand();
}

解决方案 »

  1.   

                if (!base.IsPostBack)
                {
                      //显示内容
                         load();
                }
      

  2.   

    修改了XML文件需要重新加载treeview
    你重新执行了load方法了吗?
      

  3.   

    修改了xml以后需要重新绑定数据控件啊,
      

  4.   

    lz修改了xml之后,在treeview控件里绑定的还是原来的,所以得重新绑定才行
      

  5.   

    我这里写的代码是load的代码,修改xml之后当然执行了一次load方法,但是这样还是不行,不知是什么原因
      

  6.   

    并且,修改xml的那段代码经过调试,确定重新加载过load方法,并且读出来的数据时最新的,只不过不能在treeview控件里面显示新的
      

  7.   

    你第一次给treeview绑定XML数据源时是怎么绑定的?
      

  8.   

    for (int j = 0; j < getdt.Columns.Count; j++){ 
    dt1.Columns.Add(getdt.Columns[j].ColumnName); 
    dt2.Columns.Add(getdt.Columns[j].ColumnName); 
      

  9.   

    问题终于解决了,问题出现的原因是因为我修改xml文件的是另外一个窗口,而且修改后在那个窗口调用的load方法。这样是不能直接调用的。
    我来分享一下我的解决方法吧!!
    比如,你要在form2里面调用form1里面的某个方法。
      首先,将form1里面要调用的方法,比如test()设置为public,然后在form2里面重载其构造函数,具体代码如下:Form f1;
    public form2(Form1 = form)
    {
      this.f1 = form;
      InitializeComponent();
    }  然后,在form1里面,打开form2的时候传递参数,代码如下:  Form2 f2 = new Form2(this);
      f2.show();  这样以来,就可以在form2中随意调用form1中的公共方法了!!