理解层级概念,层级理论上可以有无限级,一般用到四,五级也够用了。最上级的只能有一个,我们把它叫做“爷”,接下来是“父”,再是“子”,再是“孙”,接下来是“曾孙”......,汇总如下:“爷,父,子,孙,曾孙”,这里是5级关系,除了只能有一个外,其余可以有无限个。记住这些,下面要用。

第一小时:学习直接用代码将数据填充到树控件中。
为什么要先学习直接用代码将数据填充到树控件中?因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。
目的:我们要在树控件中建立如下的一个3层级关系
水果
                |
                |__苹果
                |  |__红富士
                |  |__国光
                |
                |__葡萄
                   |__红提子
                   |__青提子
解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。
在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。概括如下:
爷(只能有一个):水果
父(这里有2个):父1:苹果;父2:葡萄
子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子)
            1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist
如何找到这两个控件?
            Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version 6.0"
            Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version 6.0"
            Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。

2、设置这两个控件的属性
首先要讲清楚控件的属性设置有2一种是设置这个控件在ACCESS中的属性,比如名称等。一种是设置这个控件本身的属性。要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。跟我们平时设置文本框什么的一样。要设置这个控件本身的属性,只要双击这个控件就可以了。
            1)设置Treeview控件在ACCESS中的名称属性,将名称设置为“Treeview"
            2)设置Imagelist控件在ACCESS中的名称属性,将名称设置为“Image"
            2)设置Imagelist控件本身的属性,双击控件后,在弹出来的设置框中选“Images",单击“Insert
            Picture"按钮,在你电脑中选择你需要的图标。在“Key:”栏中填入“K1”。其他默认设置不用改。
            3)设置Treeview控件本身的属性,双击控件后,在弹出来的设置框中选“General”,在这个选项面版中有很多项设置,大多数是设置树控件的显示格式,你自己慢慢研究。这里我们将第一项“Style"选7,在第五项“Imagelist"选项中将我们放置的Imagelist控件“Image"选上。这项设置就将图标和树控件联系了起来。

3、写代码将数据填充到树控件中
代码写在哪里?我们希望窗体一打开,数据就自动填充在树控件中,所以这个代码就写在窗体的加载事件中,代码及解释如下:
            Private Sub Form_Load()
            '* -----------------------------------------------------------------
            '*用代码将数据填充到树控件中
            '* -----------------------------------------------------------------
              Dim Nodeindex As Node
            '*------------------------------------------------------------------
            '*解释:定义Node
            '*Node是树控件的对象
            '*每个Node都有三个东西,图标,文本,索引值
            '*图标和文本都是实际显示出来的,索引值是隐含的
            '*------------------------------------------------------------------
                '设置最顶级的“爷”:
            '* ---------------------------
  Set Nodeindex = TreeView.Nodes.Add(, , "爷", "水果", "K1")
                Nodeindex.Sorted = True
            '*------------------------------------------------------------------
            '*树控件填充数据的方法是Nodes.Add
            '*括号内是Add方法的参数
            '*在这里“爷”是索引值,“水果”是将显示的文本,“K1”是图标的索引值
            '*Sorted是指Node的排序,True就是指采用排序,默认是按拼音
            '*第一,二个参数是空的
            '*具体的参数设置以后你可以慢慢详细研究
            '*------------------------------------------------------------------
                '设置第二级“父”
            '* ---------------------------
               Set Nodeindex = TreeView.Nodes.Add("爷", tvwChild, "父1", "苹果",
            "K1")
               Nodeindex.Sorted = True
               Set Nodeindex = TreeView.Nodes.Add("爷", tvwChild, "父2", "葡萄",
            "K1")
               Nodeindex.Sorted = True
            '*------------------------------------------------------------------
            '*第一个参数“爷”是指这一层对应上层“爷”的
            '*tvwChild参数是规定格式,指相对来说,这一层是爷的子层
            '*“1”是索引值,因为“父”有2个,而索引值是唯一的所以要编号,用“父1”“父2”分开
            '*“苹果”“葡萄”是要显示的文本,K1是显示图标的索引值
            '*现在知道为什么在“爷”层设置时,第一,第二个参数是空的,因为这是最顶层
            '*------------------------------------------------------------------
                '设置第三级“子”
            '* ---------------------------
               Set Nodeindex = TreeView.Nodes.Add("父1", tvwChild, "子1", "红富士",
            "K1")
               Nodeindex.Sorted = True
               Set Nodeindex = TreeView.Nodes.Add("父1", tvwChild, "子2", "国光",
            "K1")
               Nodeindex.Sorted = True
               Set Nodeindex = TreeView.Nodes.Add("父2", tvwChild, "子3", "红提子",
            "K1")
               Nodeindex.Sorted = True
               Set Nodeindex = TreeView.Nodes.Add("父2", tvwChild, "子4", "青提子",
            "K1")
               Nodeindex.Sorted = True
            '*------------------------------------------------------------------
            '*第一个参数“父1,2”是指这一层对应上层“父”的,但要注意对应的是“父1”还是“父2”
            '*tvwChild参数是规定格式,指相对来说,这一层是父的子层
            '*“子1”是索引值,因为“子”有4个,而索引值是唯一的,所以要编号,用“1,2,3,4”分开
            '*“红富士”等是要显示的文本,K1是显示图标的索引值
            '*------------------------------------------------------------------
            End Sub
就这么多代码,总共十几行,就可以在树控件中显示数据了,很简单吧。第一小时结束。
第二小时:学习怎样将树控件和数据库中的数据绑起来
在第一小时里,我们学习了怎样直接用代码填充树控件,但在实际使用中,这种方法的应用性不大,只有将树控件与数据库中的数据结合起来,才能有真正的应用。其实绑定数据库的方法和直接用代码填充是大同小异的,我们要做的只是将Add的参数里,原来我们手工输入的变换一下,让程序知道去数据库中找数据。

目的:将数据库中的数据与树控件绑定
背景:我们想在树控件中显示销售客户的层级列表,这个销售客户的分层是这样的,先按“大区”,再按“省份”,最后到“客户”我们在数据库中建立了三个表,字段如下:
大区表:大区ID,大区名称
省份表:省份ID,省份名称,所属大区
客户表:客户ID,客户名称,所属省份
这三个表互相建立了关系
            1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist
            2、设置这两个控件的属性在这里和第一小时唯一的区别是我们在Imagelist控件的设置时,导入了两个图标,一个KEY为K1,一个为K2,原来树控件的Node图标是可以变化的,我们准备某个项没有选中时的图标是一个没有打开的文件夹,选中时是一个打开的文件夹,以区别。
            3、编写代码,如下:
            Private Sub Form_Load()
            '* -----------------------------------------------------------------
            '* 用数据库表(查询也一样)中数据填充树控件
            '* -----------------------------------------------------------------
                Dim Rec As New ADODB.Recordset
                Dim stRecQL As String
                Dim Item As Integer
                Dim i As Integer
                Dim nodindex As Node
            '* -----------------------------------------------------------------
            '* 定义各类
            '* -----------------------------------------------------------------

'设置最顶级的"爷"
            '* ---------------------------
                Set nodindex = TreeView.Nodes.Add(, , "爷", "销售客户", "K1", "K2")
                nodindex.Sorted = True
            '* -----------------------------------------------------------------
            '*这里的设置跟第一小时里基本是一样的
            '*但最后多了一个"K2"的参数,"K1"代表的是未被选中时的图标,"K2"代表是被选中后的图标
            '*仔细观察一下,你会发现选中和没选中的图标是不一样的,一个是一个文件夹,一个是一个打开的文件夹
            '* -----------------------------------------------------------------
                '设置第二级"父"
            '* ---------------------------
                Rec.Open "大区表", CurrentProject.Connection, adOpenKeyset,
            adLockOptimistic, adCmdTableDirect
                For i = 0 To Rec.RecordCount - 1
                    Set nodindex = TreeView.Nodes.Add("爷", tvwChild, "父" &
            Rec.Fields("大区ID"), Rec.Fields("大区名称"), "K1", "K2")
                    nodindex.Sorted = True
                    Rec.MoveNext
                Next
                Rec.Close
            '* -----------------------------------------------------------------
            '*第一行意思是打开一个表去寻找数据(查询也是可以的)
            '*关键在与Add参数的变化
            '*大家看第三个参数,在第一小时里,这里是"父1",这里用Rec.Fields("大区ID")来代替"1",意思是用表的编号来代替手工编号
            '*第四个参数也是一样,直接用表中的名称字段来取代原来我们手工的命名
            '* -----------------------------------------------------------------

'设置第三级"子"
            '* ---------------------------
               Rec.Open "省份表", CurrentProject.Connection, adOpenKeyset,
            adLockOptimistic, adCmdTableDirect
                For i = 0 To Rec.RecordCount - 1
                    Set nodindex = TreeView.Nodes.Add("父" & Rec.Fields("所属大区"),
            tvwChild, "子" & Rec.Fields("省份ID"), Rec.Fields("省份名称"), "K1", "K2")
                    nodindex.Sorted = True
                    Rec.MoveNext
                Next
                Rec.Close
            '* -----------------------------------------------------------------
            '*不用再解释了吧
            '*要注意的是,定义第一个参数的时候,不是用"父" & Rec.Fields("大区ID"),而是用"父" &
            Rec.Fields("所属大区")
            '*这个意思是:用省份表中关联大区表的字段,而不是直接用大区表的ID
            '* -----------------------------------------------------------------

'设置第四级"孙"
            '* ---------------------------
            Rec.Open "客户表", CurrentProject.Connection, adOpenKeyset,
            adLockOptimistic, adCmdTableDirect
                For i = 0 To Rec.RecordCount - 1
                    Set nodindex = TreeView.Nodes.Add("子" & Rec.Fields("所属省份"),
            tvwChild, "孙" & Rec.Fields("客户ID"), Rec.Fields("客户名称"), "K1", "K2")
                    nodindex.Sorted = True
                    Rec.MoveNext
                Next
                Rec.Close
            '* -----------------------------------------------------------------
            '*到此你应该完全明白了
            '* -----------------------------------------------------------------

End Sub
第二小时结束

第三小时:将树控件与窗体结合
我们做树控件,当然不可能单单为了显示层级数据,我们希望跟窗体结合,当我们单击树控件中的某个客户时,窗体上能相应的转到这个客户的资料。
目的:将树控件与窗体结合
            1、我们还是沿用第二个小时里的例子,但在建立窗体时,将窗体的数据来源设为“客户表”,并在窗体中放置好客户表的字段。
            2、写入如下代码:
            Private Sub Treeview_NodeClick(ByVal Node As Object)
            '* -----------------------------------------------------------------
            '*树控件的鼠标点击事件为NodeClick
            '* -----------------------------------------------------------------
            Dim str As String
            '* -----------------------------------------------------------------
            '*定义一个筛选
            '* -----------------------------------------------------------------
            If Node.Text = "销售客户" Or Node.Key Like "父*" Or Node.Key Like "子*"
            Then
            str = ""
            '* -----------------------------------------------------------------
            '*在第一小时里,我们说了Node有三个东西,图标,文本,索引值
            '*文本就是text,索引值就是Key
            '这里将就是说当我们点击"爷","父"或"子"层的时候,不筛选窗体
            '*这个条件也可写成:If Node.key = "爷" Or Node.Key Like "父*" Or Node.Key Like
            "子*" Then
            '* -----------------------------------------------------------------
            Else
            str = "[客户名称]='" & Node.Text & "'"
            End If
            Me.Form.FilterOn = True
            Me.Form.Filter = str
            '*按指定的条件进行窗体筛选
            End Sub
明白了吧,所谓结合窗体,实际不过是进行窗体筛选而已。第三小时结束(5分钟也够了,哈哈)

转载于:https://www.cnblogs.com/skila/archive/2009/06/10/1500596.html

TreeView 控件帮助文件相关推荐

  1. C# 窗体应用TreeView控件使用

    C# 窗体应用TreeView控件使用 前言: TreeView控件在窗体应用里面使用也是频率比较高的,我们在使用TreeView一般是对资源的分层展示,类似数据结构里面树的凹入表示法.很多公司都是使 ...

  2. 递归遍历文件夹,并添加到TreeView控件中

    遍历文件夹,并把所有节点增加到TreeView控件中,这里单独写成了一个静态类,传入根目录节点和指定的目录这两个参数即可,可以稍作扩展用于其他方案 View Code 1 using System; ...

  3. TreeView控件应用--访问文件或文件夹(一)

    C#用TreeView访问文件或文件夹,通过递归,展开所有文件夹(类似资源管理器的树形窗体) 首先,算法是用递归算法,不断的递归文件.以此来遍历整个电脑的磁盘内容,过程也很简单.这种算法的时间复杂度太 ...

  4. 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) ....

    可视化webpart基础开发--TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 作者:miragesky2049 原文地址:http://blog.csdn.net/mirages ...

  5. [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹

    原文 张丹-小桥流水,C#2010 在TreeView控件下显示路径下所有文件和文件夹 C#2010学习过程中有所收获,便总结下来,希望能给和我一样在学习遇到困难的同学提供参考. 本文主要介绍两个自定 ...

  6. C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标

    在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果 ...

  7. 给TreeView控件绑定数据

    TreeView控件显示Node对象的等级体系结构,每个Node对象包含了一个标签和可选的点位图.TreeView控件通常用于显示文档头.索引中的条目.磁盘上的文件和目录或者可以显示为等级结构的各种其 ...

  8. TreeView 控件

    Windows 窗体 TreeView 控件以类似于在 Windows 资源管理器左窗格中显示文件和文件夹的方式显示节点的层次结构.每个节点可能包含称为子节点的其他节点.父节点或包含子节点的节点可以展 ...

  9. Python GUI编程入门(31)-Treeview控件

    Treeview是Tkinter8.5新引入的控件,可以用于实现较为复杂的GUI界面.本文使用一个FileBrowser实例来说明它的用法. 构建主窗口和退出菜单的代码和前一篇文章几乎相同: root ...

最新文章

  1. 语义网所谓的“本体”的具体例子是什么?人工智能
  2. Linux命令行好玩的命令
  3. python代码获取每一天在一年中出现的次数(星期)
  4. Windows下C 用 Socket 发送图片--基础
  5. apache访问快捷方式
  6. [转载]监控 Linux 性能的 18 个命令行工具
  7. 搜索的php mysql代码生成器_四款强大的PHP代码生成器
  8. SpringBoot整合kafka案例
  9. PPT转换PDF格式怎么转换?后悔现在才知道
  10. Alarm:IT界朋友请珍惜你的身体[转贴]
  11. 关于Cocos2d-x中图集中图片的调用
  12. 交叉熵反向求导计算过程
  13. UE4官方文档UI学习:3.UMG 创建暂停菜单
  14. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(八)——反馈
  15. STC15单片机-数码管显示PCB板温度(TM1620驱动芯片使用介绍)
  16. CC2430 定时器溢出中断 详解
  17. 怎么停止skywalking_SkyWalking 告警设置
  18. 蒲公英超级签名原理(手动做超级签名)
  19. 桌面远程控制计算机名字和,Win7系统远程控制其他计算机桌面教程
  20. 关键业绩指标(KPI)

热门文章

  1. VBS脚本压缩IIS日志
  2. c# 构造sql语句
  3. Google 网站品质指南
  4. win10怎么设置默认浏览器_vscode如何设置默认打开的浏览器为Chrome?
  5. jdbctemplate 批量删除_10秒3步批量去除PDF水印
  6. Job中的Task是如何调度的
  7. (15)System Verilog系统随机函数
  8. 7 SystemVerilog语言编写UART接收
  9. java 和_java中的和=是什么意思
  10. 蓝桥杯单片机:11届决赛