C#编程,TreeView控件的学习

新建一个WinForm项目之后,在窗体中放入一个treeView控件(treeView1),根据数据库数据填充建立树节点。数据库的结构如下:

ID        Title        P_ID

a          根节点           0

b          子节点1         a

c          子节点2         a

默认P_ID=0的节点为根节点a,下面有2个子节点b、c。

ID列为不重复的文本,在treeView1中表示TreeNode的Name属性;

Title列为普通文本,在treeView1中表示TreeNode的Text属性;

P_ID列为父ID,在treeView1中表示TreeNode的Tag属性。

一、用递归方法进行历遍添加所有节点到treeView1。

在WinForm的Load事件中载入并建立treeView1的节点,用了几个自定义的方法完成添加节点的操作:

private void CreatTree()
{
   TreeNode node = new TreeNode(); //定义根节点
   Model.getByPID("0"); //自定义的获取根节点的方法,并转为属性
   node.Name = Model.ID; //将类Model的各个属性赋值给根节点
   node.Text = Model.Title;
   node.Tag = Model.P_ID;
   treeView1.Nodes.Add(node);//将节点node作为treeView1的根节点
   cTree(node,node.Name); //调用另一个方法为根节点添加其他
   treeView1.ExpandAll(); //展开所有节点
}
private void cTree(TreeNode node,string ID)//当前节点,节点的ID
{ 
   node.Name = ID;
   DataTable table = PublicTools.AccessHelper.ExecuteDataTable("select * from CodeEditor where P_ID = @P_ID", new OleDbParameter("@P_ID", ID)); //用自定义的方法根据当前节点的ID查找所有子节点
foreach( DataRow row in table.Rows)//历遍所有子节点,赋值并添加
{
TreeNode n =new TreeNode();
n.Name = (string)row["ID"];
n.Text = (string)row["Title"];
    n.Tag  = (string)row["P_ID"];
     node.Nodes.Add(n);
cTree(n,n.Name); //用递归的方法添加完整的树节点
 }
}

二、处理一般的事件和设置

1、树节点的单击事件:treeView1_AfterSelect,代码:

//使节点标签可编辑
treeView1.LabelEdit = true;

2、树节点修改完成后事件:treeView1_AfterLabelEdit,代码:

//使节点标签不可编辑
treeView1.LabelEdit = false;

3、树节点失去焦点仍高亮的设置:

(1)

treeView1.HideSelection = false; //一般在完成树节点之后

(2)treeView1_DrawNode 事件:

e.DrawDefault = true;
//这里只是一个默认值,可添加重绘节点的具体代码

三、TreeView控件和TreeNode的常用成员:

AfterSelect //单击事件

TreeView.HideSelection = False;  //可让选中节点保持高亮

Node = TreeView.SelectedNode; //已选中的当前树节点

string I = treeView1.SelectedNode.Index.ToString()

//当前节点的索引值,由0开始,只限于同父、同级的节点集合

treeView1.SelectedNode.Text = “String”; //设置当前节点的文本

string String = treeView1.SelectedNode.Text; //获取当前节点的文本

treeView1.SelectedNode.FullPath.ToString();

//当前节点的全路径,从根节点开始到当前节点,由节点的Text属性加“\”连接而成的字符串,最后的节点后面没有“\”

treeView1.SelectedNode.Tag;

//当前节点的其他信息,可以是各种类型,也可以是对象

treeView1.SelectedNode.Name:树节点的名称,也是(TreeNodes集合)TreeNodeCollection 中该节点的键(key)

treeView1.SelectedNode.Parent; //当前树节点的父树节点。

treeView1.SelectedNode.Level; //树视图的深度(从零开始)

四、在treeView控件中,成员Nodes其实就是一个TreeNode的集合,所以也可以使用TreeNodeCollection的成员:

TreeNodeCollection 类,TreeNodes集合类

treeView1.Nodes.Add(字符串);

//以字符串为显示文本添加节点到树集合的末尾

treeView1.Nodes.Add(TreeNode);

//将现有的树节点添加到树节点集合的末尾。

treeView1.Nodes.Add(String, String):创建具有指定键和文本的新树节点,并将其添加到集合中。

treeView1.Nodes.Find(string key,bool searchAllChildren):查找具有指定键的树节点,可以选择搜索子节点,返回一个list[]。

时间: 2024-11-10 14:53:20

C#编程,TreeView控件的学习的相关文章

初学C#编程,TreeView控件的学习(WinForm)

新建一个WinForm项目之后,在窗体中放入一个treeView控件(treeView1),根据数据库数据填充建立树节点.数据库的结构如下: ID        Title        P_ID a          根节点           0 b          子节点1         a c          子节点2         a 默认P_ID=0的节点为根节点a,下面有2个子节点b.c. ID列为不重复的文本,在treeView1中表示TreeNode的Name属性: T

如何:使用TreeView控件实现树结构显示及快速查询

本文主要讲述如何通过使用TreeView控件来实现树结构的显示,以及树节点的快速查找功能.并针对通用树结构的数据结构存储进行一定的分析和设计.通过文本能够了解如何存储层次结构的数据库设计,如何快速使用TreeView控件生产树,以及如何快速查找树节点. 关键词:C# TreeView.树结构存储.树节点查找.层次结构 一.      概述: 树结构(层次结构)在项目的使用中特别常见,在不同项目中使用的控件可能不同(如:在Extjs中使用的是TreePanel控件,WinForm中可能用的是Tre

WPF中TreeView控件数据绑定和后台动态添加数据

数据绑定: TreeView数据绑定需要使用层次结构数据模板(HierarchicalDataTemplate)来显示分层数据.XAML代码如下: <TreeView Name="chapterTree" Grid.Column="0"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=ChildNodes}"&

Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式

首先是头文件,内容如下: #include <tchar.h> #include "..\CommonFiles\CmnHdr.h" #include <Windows.h> #include <WindowsX.h> #include <CommCtrl.h> #include "resource.h" #pragma comment (lib,"comctl32.lib") BOOL InitT

WinForms中TreeView控件的扩展与使用

EXE文件方便大家测试   源码下载 TreeView控件非常的好用,在我的公文系统中,使用TreeView控件选择接收公文的人员,支持单选,可多选 现提取出来,方便大家使用 涉及到的知识点 1:从Xml文件中加载内容显示到TreeView控件中 <?xml version="1.0" encoding="utf-8"?> <根目录> <组 名称="校长" 用户ID="1000"> <

ASP.NET - TreeView控件,只操作最后一级节点

效果: 绑定TreeView控件:http://www.cnblogs.com/KTblog/p/4792302.html 主要功能: 点击节点的时候,只操作最后一级的节点,其他节点跳过不执行代码. 代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Web.UI.WebControls; 6 7 nam

在工作表左侧中添加TreeView控件

开发环境基于VSTO:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 需求是在sheet的左侧停靠System.Windows.Forms.TreeView控件,实现类似资源浏览器的效果,另外,tree节点使用自定义的图标,支持复选框. 首先准备好树节点的图标,使用visual studio 2010自带的图标可以省去很多麻烦(在安装目录\Common7\VS2010ImageLibrary).我挑选了4个16x16大小的图标拷贝到vsto工程下

将MenuStrip控件中的信息添加到TreeView控件中【转载】

本文详细介绍怎样将MenuStrip控件中的信息添加到TreeView控件中 首先在WinForm窗体中添加一个MenuStrip控件和TreeView控件,根据个人的爱好把控件布局好后.在窗体的加载事件中(根据自己的情况而定)添加如下的代码: /// <summary>   /// 窗体加载时事件   /// </summary>   /// <param name="sender"></param>   /// <param n

TreeView控件的应用

下面展示的是一个用Treeview控件编辑的一个住房信息管理系统的简单domo,其中Form1为主界面,Form2象征性的展示每一个子项: Form1: namespace 用树型列表动态显示菜单 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary&g