TreeView

            //可手动添加根节点和子节点,也可代码添加
            //两个根节点
            TreeNode tn1 = treeView1.Nodes.Add("省份");
            TreeNode tn2 = treeView1.Nodes.Add("市区");
            //三个子节点,用于显示省份
            TreeNode tn01 = new TreeNode("河南省");
            TreeNode tn02 = new TreeNode("江苏省");
            TreeNode tn03 = new TreeNode("浙江省");
            //三个子节点,用于显示市区
            TreeNode tn04 = new TreeNode("郑州市");
            TreeNode tn05 = new TreeNode("南京市");
            TreeNode tn06 = new TreeNode("杭州市");
            tn1.Nodes.Add(tn01);
            tn1.Nodes.Add(tn02);
            tn1.Nodes.Add(tn03);
            tn2.Nodes.Add(tn04);
            tn2.Nodes.Add(tn05);
            tn2.Nodes.Add(tn06);

 private void Form1_Load(object sender, EventArgs e)
        {
            //可手动添加根节点和子节点,也可代码添加
            //两个根节点
            TreeNode tn1 = treeView1.Nodes.Add("省份");
            TreeNode tn2 = treeView1.Nodes.Add("市区");
            //三个子节点,用于显示省份
            TreeNode tn01 = new TreeNode("河南省");
            TreeNode tn02 = new TreeNode("江苏省");
            TreeNode tn03 = new TreeNode("浙江省");
            //三个子节点,用于显示市区
            TreeNode tn04 = new TreeNode("郑州市");
            TreeNode tn05 = new TreeNode("南京市");
            TreeNode tn06 = new TreeNode("杭州市");
            tn1.Nodes.Add(tn01);
            tn1.Nodes.Add(tn02);
            tn1.Nodes.Add(tn03);
            tn2.Nodes.Add(tn04);
            tn2.Nodes.Add(tn05);
            tn2.Nodes.Add(tn06);
            //给节点添加图标
            imageList1.Images.Add(Image.FromFile(@"F:\图片\Pictures\立体图片\Fish06.jpg"));
            imageList1.Images.Add(Image.FromFile(@"F:\360wallpaper_dt.jpg"));
            treeView1.ImageList = imageList1;
            treeView1.ImageIndex = 0;
            tn01.ImageIndex = 1;
            //选中后换图标
            treeView1.SelectedImageIndex = 1;
        }

        private void button1_Click(object sender, EventArgs e)
        {

            treeView1.Nodes.Remove(treeView1.SelectedNode);
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            label2.Text = e.Node.Text;
        }

将数据库中的数据递归加载到TreeView上

class Area
    {
        public int AreaID
        {
            get; set;
        }
        public string AreaName
        {
            get; set;
        }
        public int AreadPID
        {
            get; set;
        }
    }
    class SqlHelper
    {
        private static readonly  string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
        /// <summary>
        /// 执行SQL语句返回一个DataReader
        /// 当返回DataReader的时候 注意
        /// 1、Connection不能关闭
        /// 2、DataReader不能关闭
        /// 3、Command对象执行ExecuteReader()方法的时候传递一个参数ConmandBehavior.CloseConnection
        /// </summary>
        /// <param name="sqlCmd"></param>
        /// <param name="pms"></param>
        /// <returns></returns>
        public static SqlDataReader ExecuteReader(string sqlCmd, params SqlParameter[] pms)
        {
            SqlConnection con=new SqlConnection(conStr);
            using (SqlCommand cmd=new SqlCommand(sqlCmd,con))
            {
                if (pms != null)
                {
                    cmd.Parameters.AddRange(pms);
                }con.Open();
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return reader;
            }
        }
        public static int ExecuteNonQuery(string sql,params SqlParameter[]pms)
        {
            using(SqlConnection con=new SqlConnection(conStr))
            {
                using(SqlCommand cmd=new SqlCommand(sql,con))
                {
                    if(pms!=null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    con.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }
    }
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            List<Area> list = GetDataByParentID(0);
            LoadDataToTree(treeView1.Nodes,list);
        }

        private void LoadDataToTree(TreeNodeCollection treeNodeCollection, List<Area> list)
        {
            foreach (Area area in list)
            {
                TreeNode node = treeNodeCollection.Add(area.AreaName);
                //记录当前区域的ID
                node.Tag = area.AreaID;
                //设置让TreeView中每个节点单击右键时显示右键菜单
                node.ContextMenuStrip = deletecontextMenuStrip1;
                //获取当前ID对应的所有子节点
                List<Area> listChild = GetDataByParentID(area.AreaID);
                LoadDataToTree(node.Nodes,listChild);
            }
        }
        /// <summary>
        /// 根据PID获取该区域下面的所有子ID
        /// </summary>
        /// <param name="pid"></param>
        /// <returns></returns>
        private List<Area> GetDataByParentID(int pid)
        {
            List<Area> list=new List<Area>();
            string selectCmd = "select * from City where AreaPID=@pid";
            using (SqlDataReader reader = SqlHelper.ExecuteReader(selectCmd, new SqlParameter("@pid", pid)))
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        Area model=new Area();
                        model.AreaID = reader.GetInt32(0);
                        model.AreaName = reader.GetString(1);
                        model.AreadPID = reader.GetInt32(2);
                        list.Add(model);
                    }
                }
            }
            return list;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                int areaID = (int) treeView1.SelectedNode.Tag;
                DeleteByAreaID(areaID);
                treeView1.SelectedNode.Remove();
            }
        }
        private void DeleteByAreaID(int areaID)
        {
            List<Area> list=GetDataByParentID(areaID);
            foreach(Area item in list)
            {
                DeleteByAreaID(item.AreaID);
            }
            string sqlCommand="delete from City where AreaID=@id";
            SqlParameter pms=new SqlParameter("@id",areaID);
            SqlHelper.ExecuteNonQuery(sqlCommand,pms);
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            //获得选中节点
            this.treeView1.SelectedNode = e.Node;
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                int areaID = (int)treeView1.SelectedNode.Tag;
                DeleteByAreaID(areaID);
                treeView1.SelectedNode.Remove();
            }
        }

       
    }

将XML中的文件节点绑定到TreeView中

<?xml version="1.0"  ?>
<食物>
    <水果>
    <苹果>20元</苹果>
    </水果>
    <水果>
    <橘子>15元</橘子>
    </水果>
</食物>
using System.IO;//引用与输入输出文件流有关的命名空间
using System.Xml;//引用与XML有关的命名空间

namespace BindingXML
{
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }                                                                                          

        private XmlDocument NexusDocument = new XmlDataDocument();//定义一个XML文档对象
        private void BindingXML_Load(object sender, EventArgs e)
        {
            string filePath = "NexusPoint.xml";//定义一个变量保存XML文件的路径
            if(File.Exists(filePath))//当在指定路径下存在该文件时
            {
                NexusDocument.Load(filePath);//加载该路径下的XML文件
                RecursionTreeControl(NexusDocument.DocumentElement,treeView1.Nodes);//将加载完成的XML文件显示在TreeView控件中
                treeView1.ExpandAll();//展开TreeView控件中的所有项
            }
        }
         /// <summary>
         /// RecursionTreeControl:表示将XML文件的内容显示在TreeView控件中
         /// </summary>
         /// <param name="xmlNode">将要加载的XML文件中的节点元素</param>
         /// <param name="nodes">将要加载的XML文件中的节点集合</param>
        private void RecursionTreeControl(XmlNode xmlNode,TreeNodeCollection nodes)
        {
            foreach(XmlNode node in xmlNode.ChildNodes)//循环遍历当前元素的子元素集合
            {
                string temp = (node.Value != null ? node.Value : (node.Attributes != null && node.Attributes.Count > 0) ? node.Attributes[0].Value : node.Name);//表示TreeNode节点的文本内容
                TreeNode new_child = new TreeNode(temp);//定义一个TreeNode节点对象
                nodes.Add(new_child);//向当前TreeNodeCollection集合中添加当前节点
                RecursionTreeControl(node,new_child.Nodes);//调用本方法进行递归
            }
        }
    }
}

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(TREEVIEW);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true

原文地址:https://www.cnblogs.com/chenyongblog/p/3078509.html