搞了好久,哎,C#的一些控件用起来还没习惯,所以折腾啊。

TreeView的形成,必然要初始化,数据记录是从数据库中取得的,那么要先取再遍历。介绍下心得吧。

首先,数据预期显示结果如下

其次,数据库结构如下

需要解释的是,c_id为自增长的主键,也就是即将要用到的TV节点的TAG,c_pid是父节点的TAG

数据库内容如下

初始化显示的代码如下,用了递归思想

1  MySqlConnection mysqlconn = null;
 2         MySqlCommand myCmd = new MySqlCommand();
 3         MySqlDataReader myDr = null;//数据库连接
 4         public usInstallAdd(MDIParent m, GlobalClass g)
 5         {//构造函数
 6             mdi = m;
 7             globalvar = g;
 8             InitializeComponent();
 9             tv_Pro.Dock = DockStyle.Left;
10             
11             //load data
12             mysqlconn = new MySqlConnection(globalvar.strmysqlconnstr);
13             mysqlconn.Open();
14             myCmd.Connection = mysqlconn;
15             string strSQl = @"select *from t_pro";
16             myCmd.CommandText = strSQl;
17             myCmd.CommandType = CommandType.Text;
18             myDr = myCmd.ExecuteReader();
19 
20             TreeNode pnode = new TreeNode();
21             pnode.Text = "项目管理";
22             pnode.Tag = 0;
23             tv_Pro.Nodes.Add(pnode);//先初始化一个节点
24             
25             while (myDr.Read())
26             {
27                 TreeNode node = new TreeNode();
28                 node.Text = myDr["c_name"].ToString();
29                 node.Tag = myDr.GetInt32(0);
30                 string strValue = myDr["c_pid"].ToString();
31                 if (pnode != null)
32                 {//遍历查询并添加
33                     fun_FindNode(pnode, strValue, node);
34                 }
35             }
36             tv_Pro.ExpandAll();
37             myDr.Close();
38             myCmd.Dispose();
39             mysqlconn.Close();
40          }
41 //遍历函数如下
42 private TreeNode fun_FindNode(TreeNode tnParent, string strValue, TreeNode tnc)
43         {
44             //遍历TV
45             if (tnParent == null) 
46                 return null;
47             if (tnParent.Tag.ToString() == strValue)
48             {
49                 tnParent.Nodes.Add(tnc);
50                 return tnParent;
51             }
52             TreeNode tnRet = null;
53             foreach (TreeNode tn in tnParent.Nodes)
54             {
55                 tnRet = fun_FindNode(tn, strValue, tnc);
56                 if (tnRet != null)
57                 {
58                     //tnRet.Nodes.Add(tnc);
59                     break;
60                     //continue;
61                 }
62             }
63             return tnRet;
64         }

转载于:https://www.cnblogs.com/lifw/articles/1609783.html

遍历Treeview每个节点并初始化(C#)相关推荐

  1. 使用递归方法遍历TreeView的节点如配置则勾选

    自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...

  2. 遍历TreeView

    遍历TreeView 有两种遍历方式: 一:使用递归遍历 //my_condition条件 public void FindNodeFunc(string my_condition) {TreeVie ...

  3. java 遍历xml子节点,Axiom解析XML,axiomxml,1、遍历XML全部节点,

    Axiom解析XML,axiomxml,1.遍历XML全部节点, 1.遍历XML全部节点,将节点放入Map返回2.遍历XML当前父节点下的所有子节点 [Java]代码import java.util. ...

  4. python 遍历xml所有节点

    1.xml文件 2.代码 #coding:utf-8 import xml import xml.etree.ElementTree as ET""" 实现从xml文件中 ...

  5. TreeView查获节点并选中节点

    TreeView查获节点并选中节点如果有多个节点则会继续查找下一个节点 支持关键字搜索 private void SearchNodes(string SearchText, TreeNode Sta ...

  6. python里遍历筛选xml文件_python xml.etree.ElementTree遍历xml所有节点实例详解

    python xml.etree.ElementTree遍历xml所有节点 XML文件内容: 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 import xml.etre ...

  7. 案例 TreeView动态控制节点 c# 1614264758

    案例 TreeView动态控制节点 c# 1614264758 需求一 添加节点与子节点 需求二 删除与清空节点

  8. C语言实现 二叉树 对任意类型数据的遍历、叶子节点统计、树高计算

    本文主要实现C语言对二叉树的构造,可存储所有类型数据,实现数据域的遍历,本文主要介绍递归的遍历方法,含详细图文:以及树高.叶子节点的计算等. 1 二叉树构造 typedef struct Tree / ...

  9. 数据结构 - 二叉排序树BST(创建、遍历、删除节点)

    数组与链表区别: 二叉排序树的创建和遍历 代码实现 package tree.binarysorttree;public class BinarySortTreeDemo {public static ...

最新文章

  1. jsp空间流量是怎么计算的?
  2. 用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
  3. 下如何画出频率瀑布图_用maftools一行代码画出瀑布图
  4. 【Java算法】一天24小时中,时针和分针一共重合多少次?
  5. 面向消息的中间件 (Message-Oriented Middleware, MOM)
  6. Spring Boot 解决跨域Cors问题
  7. java设计模式迭代器模式_迭代器设计模式示例
  8. iOS通知的整理笔记
  9. [Unity]限制一个值的大小(Clamp以及Mathf)
  10. c语言求信源的信息熵,第二章-信源与信息熵(三)
  11. 软件工程之软件设计③(概要设计说明书,详细设计说明书)
  12. 带t2芯片的mac装linux,制作macOS系统盘超级简单,以及T2芯片的安装方法
  13. 有道云笔记linux使用教程,我是这么用有道云笔记的!
  14. 使用hibernate的@SQLDelete和@Where注解实现逻辑删除
  15. 智能眼镜现在是什么水平?
  16. 大学生如何合理利用计算机,大学生如何安排自己的课余时间?6招,学霸教会你正确使用手机...
  17. The specified module could not be found的解决办法
  18. dhl寄件邮编错了_DHL国际快递寄错国家怎么办?
  19. 在3D游戏中显示网页
  20. CV10 图像模糊(均值、高斯、中值、双边滤波)

热门文章

  1. python2 安装faiss-gpu 报错 faiss/faiss/python/swigfaiss.i:241: Error: Unable to find ‘faiss/impl/platfo
  2. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器
  3. TVM适配NN编译Compiler缺陷
  4. HiCar基本功能介绍
  5. 英特尔® 至强® 平台集成 AI 加速构建数据中心智慧网络
  6. YOLO v1到YOLO v4(上)
  7. Python:Scrapy实战项目手机App抓包爬虫
  8. Java 数据类型转换
  9. 不支持打开非业务域名htts:....请重新配置
  10. 本地运行github上的vue2.0仿饿了么webapp项目