怎么在winform下快速用treeview绑定xml

解决方案 »

  1.   

    我做和  listView控件绑定
     不知道可否
      

  2.   

    我对winform不太熟悉,listview可以显示属性结构嘛
      

  3.   

    遍历xml绑定
    或XmlDataSource 
      

  4.   

        
            //string path = Application.StartupPath.Substring(0, Application.StartupPath.IndexOf("bin"));
            private void btnAdd_Click(object sender, EventArgs e)
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("Student.xml");
                XmlNode node = doc.CreateElement("Student");
     
                //第一个节点
                XmlNode Num = doc.CreateElement("Num");
                Num.InnerText = txtNum.Text;
                node.AppendChild(Num);
                //第二个节点
                XmlNode Name = doc.CreateElement("Name");
                Name.InnerText = txtName.Text;
                node.AppendChild(Name);
                //第三个节点
                XmlNode Age = doc.CreateElement("Age");
                Age.InnerText = txtAge.Text;
                node.AppendChild(Age);
                //添加第四个节点
                XmlNode Hobby = doc.CreateElement("Hobby");
                Hobby.InnerText = txtHobby.Text;
                node.AppendChild(Hobby);            //全部添加到根节点
                XmlNode rootNode = doc.DocumentElement;
                rootNode.AppendChild(node);
                doc.Save("Student.xml");
                MessageBox.Show("添加成功!", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                addTreeView();
            }        private void btnSearch_Click(object sender, EventArgs e)
            {
                NewMethod();
                XmlDocument doc = new XmlDocument();
                doc.Load("Student.xml");
                XmlNode Mynode = doc.DocumentElement;
                foreach (XmlNode stuNodes in Mynode.ChildNodes)
                {
                    foreach (XmlNode stu in stuNodes.ChildNodes)
                    {
                        if (stu.Name == "Num" && stu.InnerText == txtNum.Text)
                        {
                            foreach (XmlNode var in stuNodes.ChildNodes)
                            {
                                switch (var.Name)
                                {
                                    case "Name":
                                        txtName.Text = var.InnerText;
                                        break;
                                    case "Age":
                                        txtAge.Text = var.InnerText;
                                        break;
                                    case "Hobby":
                                        txtHobby.Text = var.InnerText;
                                        break;
                                }
                            }
                        }
                    }
                }
            }        private void NewMethod()
            {            tvMainForm.Nodes.Clear();
                XmlDocument xml = new XmlDocument();
                xml.Load("Student.xml");
                XmlNode root = xml.DocumentElement;
                foreach (XmlNode node in root.ChildNodes)
                {
                    TreeNode studentNode;
                    //将Student节点的Name添加到TreeView作为TreeView根节点
                    studentNode = tvMainForm.Nodes.Add(node.Name);
                    foreach (XmlNode subNode in node.ChildNodes)
                    {
                        //将Student节点下的内容添加到根节点的子节点
                        studentNode.Nodes.Add(subNode.InnerText);                }
                }
            }        private void btnUpdate_Click(object sender, EventArgs e)
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("Student.xml");
                XmlNode node = doc.DocumentElement;
                foreach (XmlNode stuNodes in node.ChildNodes)
                {
                    foreach (XmlNode stu in stuNodes.ChildNodes)
                    {
                        if (stu.Name == "Num" && stu.InnerText == txtNum.Text)
                        {
                            foreach (XmlNode var in stuNodes.ChildNodes)
                            {
                                switch (var.Name)
                                {
                                    case "Name":
                                        var.InnerText = txtName.Text;
                                        break;
                                    case "Age":
                                        var.InnerText = txtAge.Text;
                                        break;
                                    case "Hobby":
                                        var.InnerText = txtHobby.Text;
                                        break;
                                }
                            }
                        }
                    }
                }
                doc.Save("Student.xml");
                MessageBox.Show("修改成功!");
            }        private void tvMainForm_AfterSelect(object sender, TreeViewEventArgs e)
            {
                //TreeNode node = tvMainForm.SelectedNode;
                //int index = node.Index;
                if (tvMainForm.SelectedNode==null)
                {
                    return;
                }
                else
                {                XmlDocument xml = new XmlDocument();
                    xml.Load("Student.xml");
                    XmlNode root = xml.DocumentElement;
                    foreach (XmlNode node in root.ChildNodes)
                    {
                        txtName.Text = tvMainForm.SelectedNode.Text;
                    }
                    //Student stu = list[tvMainForm.SelectedNode.Text];
                    //txtNum.Text = stu.Num.ToString();
                    //txtName.Text = stu.Name;
                    //txtAge.Text = stu.Age.ToString();
                    //txtHobby.Text = stu.Hobby;
                    
                }
            }        private void btnDel_Click(object sender, EventArgs e)
            {
                if (tvMainForm.SelectedNode.Level != 0)
                {
                    tvMainForm.SelectedNode.Remove();            }
                else
                {
                    tvMainForm.SelectedNode.Remove();
                }
                XmlDocument doc = new XmlDocument();
                doc.Load("Student.xml");
                XmlNode node = doc.DocumentElement;
                foreach (XmlNode stuNode in node.ChildNodes)
                {
                    foreach (XmlNode stu in stuNode.ChildNodes)
                    {
                        if (stu.Name == "Num" && stu.InnerText == txtNum.Text)
                        {
                            stuNode.ParentNode.RemoveChild(stuNode);
                        }
                    }
                }
                doc.Save("Student.xml");
                MessageBox.Show("删除成功!");
            }
            //添加到集合中
            private void addTreeView()
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("Student.xml");
                XmlNode node = doc.DocumentElement;
                //获取根节点
                foreach(XmlNode nodes in node.ChildNodes)
                {
                   Student students = new Student();
                    if(nodes.Name =="Student")
                    {
                        foreach (XmlNode stu in nodes.ChildNodes)
                        {
                            switch (stu.Name)
                            {
                                case "Num":
                                    students.Num = Convert.ToInt32(stu.InnerText);
                                    break;
                                case "Name":
                                    students.Name = stu.InnerText;
                                    break;
                                case "Age":
                                    students.Age = Convert.ToInt32(stu.InnerText);
                                    break;
                                case "Hobby":
                                    students.Hobby = stu.InnerText;
                                    break;
                            }
                        }
                     }
                     list.Add(students.Name,students);
                }
                         
            }        private void btnExit_Click(object sender, EventArgs e)
            {
                DialogResult result;
                result = MessageBox.Show("确定要退出吗?","系统提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
                if (result == DialogResult.OK)
                {
                    Application.Exit();
                }
            }
        }
    }