zoukankan      html  css  js  c++  java
  • C#编程,TreeView控件的学习

     新建一个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[]

  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/shenbing/p/5629716.html
Copyright © 2011-2022 走看看