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[]。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值