
树型控件TreeView1用于显示具有层次结构的数据2由层叠的节点Node分支构成每个节点由图像和标签组成3每个TreeView控件均包含一个或多个根节点根节点下面包含多个子节点子节点下面还可以包含子节点。4包含子节点的节点可以展开或折叠TreeView控件的常用属性属性说明Name获取或设置控件的名称Dock控件在父容器中的停靠方式NodesTreeView控件根节点集合SelectedNode获取或设置当前TreeView控件中选定的树节点ImageList获取或设置TreeView中所使用的图像集关联ImageList控件ImageIndex获取或设置树节点显示的图像在ImageList图像集中的索引SelectedImgeIndex获取或设置节点被选中时显示的图像在ImageList图像集中的索引TreeView控件的常用事件事件说明AfterCollapse在折叠树节点后触发AfterExpand在展开树节点后触发AfterSelect在更改选中节点后触发Click在点击TreeView控件时触发注意1对TreeView控件的操作其本质是对树节点的操作。2无论是根节点还是子节点都是TreeNode对象。二、添加、删除树节点示例使用TreeView展示学校的专业以及专业下的课程。添加树节点有两种方式实现1在TreeNode编辑器中添加、删除树节点2通过代码添加、删除树节点使用TreeNode编辑器添加删除树节点操作步骤实现步骤1添加窗体“TreeViewForm”并向其中拖入TreeView控件。2选中TreeView控件点击右上角的小三角图标弹出快捷菜单。3点击“编辑节点”打开“TreeNode编辑器”按层级关系添加树节点同时也可以删除树节点。通过代码添加树节点实现步骤1创建窗体向其中拖入TreeView控件。2设置TreeView在父容器中停靠name属性为tv_tencent。3为窗体添加Load事件在事件处理函数中编码添加树节点描述腾讯公司管理团队成员的信息。//方案一使用TreeNode对象进行添加节点 private void TreeViewForm1_Load(object sender, EventArgs e) { //创建根节点 TreeNode root new TreeNode(武汉**********学院); //将根节点添加至TreeView控件上 this.tvSchool.Nodes.Add(root); //创建专业节点 TreeNode tnPro1 new TreeNode(计算机技术); TreeNode tnPro2 new TreeNode(电子商务); //将专业节点添加至根节点 root.Nodes.Add(tnPro1); root.Nodes.Add(tnPro2); //创建课程节点 TreeNode tnCourse1 new TreeNode(C#); TreeNode tnCourse2 new TreeNode(SQL SERVER); TreeNode tnCourse3 new TreeNode(搜索引擎优化); TreeNode tnCourse4 new TreeNode(网络营销推广); //将课程节点添加至专业节点 tnPro1.Nodes.Add(tnCourse1); tnPro1.Nodes.Add(tnCourse2); tnPro2.Nodes.Add(tnCourse3); tnPro2.Nodes.Add(tnCourse4); //展开TreeView的所有节点 this.tvSchool.ExpandAll(); } //方案二使用键值对的方式进行添加节点 private void TreeViewForm1_Load(object sender, EventArgs e) { this.tvSchool.Nodes.Add(001, 武汉**********学院); this.tvSchool.Nodes[001].Nodes.Add(001001, 计算机技术); this.tvSchool.Nodes[001].Nodes.Add(001002, 电子商务); this.tvSchool.Nodes[001].Nodes[001001].Nodes.Add(001001001,C#); this.tvSchool.Nodes[001].Nodes[001001].Nodes.Add(001001002, SQL SERVER); this.tvSchool.Nodes[001].Nodes[001002].Nodes.Add(001002001, 搜索引擎优化); this.tvSchool.Nodes[001].Nodes[001002].Nodes.Add(001002002, 网络营销推广); this.tvSchool.ExpandAll(); }通过代码删除树节点例如//通过节点对象删除 this.tvSchool.Nodes.Remove(tnCourse3); //通过索引下标删除 this.tvSchool.Nodes[0].Nodes[1].Nodes.RemoveAt(0); //通过键删除节点 this.tvSchool.Nodes[001].Nodes[001002].Nodes.RemoveByKey(001002001);在上面添加的节点中删除搜索引擎优化节点三、管理节点图标需要在TreeView的节点中使用图标我们需要借助ImageList控件所以我们首先需要做如下操作1向窗体中添加ImageList控件向ImageList控件中添加需要的图片。2将ImageList控件与TreeView控件进行关联即设置TreeView控件的ImageList属性。给节点设置图标有两种情况1所有节点图标都一样此时直接在属性栏中或者通过代码找到TreeView控件设置ImageIndex属性和SelectedImageIndex属性指定图片在ImageList中的索引标号来设置所有节点正常情况和选中情况下的图片索引。2节点的图标不一致【1】通过编辑器添加的节点直接在编辑中为每个节点设置ImageIndex属性和SelectedImageIndex属性。【2】通过代码使用TreeNode对象添加的节点在代码中为每个TreeNode设置ImageIndex属性和SelectedImageIndex属性。下面代码只为一个节点添加了图标其他节点省略。。。//方案一 TreeNode root new TreeNode(武汉**********学院,0,1); //方案二 TreeNode root new TreeNode(武汉**********学院); root.ImageIndex 0; root.SelectedImageIndex 1;【3】通过代码使用键值对的方式添加的节点在代码中为每个TreeNode设置ImageIndex属性和SelectedImageIndex属性。下面代码只为一个节点添加了图标其他节点省略。。。//方案一 this.tvSchool.Nodes.Add(001, 武汉**********学院,0,1); //方案二 this.tvSchool.Nodes.Add(001, 武汉**********学院); this.tvSchool.Nodes[001].ImageIndex 0; this.tvSchool.Nodes[001].SelectedImageIndex 1;四、响应事件获取选中节点为TreeView控件添加AfterSelect事件节点被选中后触发在事件处理函数中获取选中节点并提示其标签文本值和key。TreeNode selectedNode this.tvSchool.SelectedNode; //如果在添加节点的时候并不是以键值对的方式添加的或者没有设置Name值那么selectedNode.Name里面是空字符串 MessageBox.Show(selectedNode.Text , selectedNode.Name);