文档章节

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

清江堤畔
 清江堤畔
发布于 2015/02/15 12:00
字数 879
阅读 6549
收藏 8

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

            ID        Title        P_ID

            a          根节点           0

            b          子节点1         a

            c          子节点2         a

    默认P_ID=0的节点为根节点a,下面有2个子节点bc

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

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

    P_ID列为父ID,在treeView1中表示TreeNodeTag属性。


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

WinFormLoad事件中载入并建立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; //一般在完成树节点之后


2treeView1_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[]


© 著作权归作者所有

共有 人打赏支持
清江堤畔
粉丝 3
博文 5
码字总数 2879
作品 0
中山
程序员
私信 提问
C# -- 使用递归列出文件夹目录及目录下的文件

使用递归列出文件夹目录及目录的下文件 1.使用递归列出文件夹目录及目录下文件,并将文件目录结构在TreeView控件中显示出来。 新建一个WinForm应用程序,放置一个TreeView控件: 代码实现:在...

在代码的世界里游走
10/20
0
0
C#/winForm界面控件包Xceed SmartUI for .NET下载及使用介绍

原文来自龙博方案网http://www.fanganwang.com/product/5086转载请注明出处 Xceed SmartUI for .NET 相关文章 ImageKit的使用 Themida加壳经常出现的问题 Xtreme.Toolkit.Pro编译教程 Codejo...

netkongjian
2014/05/13
0
0
C# WinForm开发系列 - File

介绍文件目录相关操作, 涉及配置文件使用, 编码转换, Web下载, 加密处理等. (文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! ) 01. 愚翁专栏 CSDN第一期总结之四:Stream的问题 对于...

长征2号
2017/11/08
0
0
Winform开发中另一种样式的OutLookBar工具条

很早的时候,曾经写了一篇随笔《WinForm界面开发之“OutLookBar”工具条》介绍了OutLookBar样式的工具条,得到很多同行的热烈反馈,我个人也比较喜欢这样的工具条布局,因此我很多共享软件中...

长平狐
2012/06/11
1K
0
Winform开发中另一种样式的OutLookBar工具条

很早的时候,曾经写了一篇随笔《WinForm界面开发之“OutLookBar”工具条》介绍了OutLookBar样式的工具条,得到很多同行的热烈反馈,我个人也比较喜欢这样的工具条布局,因此我很多共享软件中...

长平狐
2012/08/22
244
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式 之 模板模式

设计模式 之 模板模式 抽象类定义了执行的方法(方法包含若干步骤),具体的步骤由子类重写实现。 使用场景 有多个子类共同的步骤方法 有重要的、复杂的共用方法 代码 由于模板模式比较简单,...

GMarshal
22分钟前
0
0
hadoop安装步骤

1.下载安装包(下载地址可网上查找,还要安装jdk,网上都有,在这就不列举了,这里用的是hadoop 3.1.1版本) 2.配置环境变量,并让它生效,执行命令 source /etc/profile JAVA_HOME=/usr/java/...

talen
25分钟前
0
0
txt转mobi格式

txt2mobi kindle对txt格式支持不好,无法识别章节。还是需要转换成mobi格式才可以。但一般txt转mobi的方法都是通过先将文档改成html格式(章节名用h1标签,段落用p标签),再通过calibre或kin...

zhnxin
38分钟前
0
0
一个三年Java工程师的面试总结

前言: 15年毕业到现在也近3年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服)、网易、滴滴、点我达,最终收到点我达和网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去...

别打我会飞
49分钟前
3
0
Linux虚拟机安装VmwareTool

1.点击虚拟机: 2.点击安装Vmware-Tools,出现如下界面,将圈起来的拖动到桌面 3.接着打开终端,执行解压缩命令 tar -xzv -f VMwareTools-10.2.5-8068393.tar.gz 这个后面的VMwareTools-10.2....

陈刚生
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部