使用TreeView控件
treeview控件用于显示分级的数据,列如组织树,磁盘上的文件和目录。
图例 2.40 典型的TreeView
可能用法:
.创建一个能被用户使用的组织树
.创建一个显示二级或更多数据的树
设置Node对象属性
一个”tree“由许多层叠树叉的“nodes”组成,每个结点由图片(设置图片属性)和一个标签(设置文本属性)代表构成。
提供给结点的图片由联结到TreeView控件的ImageList控件提供。
一个结点可以展开或收缩,依赖于此结点是否有子结点。在最顶端层是”root“结点,并且每个根结点有一定数量的子结点。
结点的总数不受限制(除非机器约束)。图例2.41显示一个树以及2个根结点;”root1“有3个子结点,”child3“有一个它
自己的子结点。”root2“有子结点,并且通过”+“预示,但是没有展开。
图例2.41 Root and child nodes
树里的每个结点实际是一个可编程的Node对象---属于Nodes 搜索集。在其他的搜索集,这里每个成员有一个唯一的引索和
关键属性,他们允许你存取结点的属性。例如,下面的结点用特定的引索node("7")设置图片和文本属性:
tvwMyTree.Nodes(7).Image="closed"
tvwMyTree.Nodes(7).Text="ieee"
无论如何,如果一个唯一的关键,例如”7 ID“被赋值于结点,代码书写如下:
tvwMyTree.Nodes("7 ID").Image="closed"
tvwMyTree.Nodes("7 ID").Text="ieee"
结点关系以及涉及的亲戚结点
每个结点能拥有子结点或父结点,依赖于与其他结点的关系。Node对象几个属性返回不同种关于子结点或父结点的信息。例如,
下面的代码使用Children属性返回子结点数量---前提,拥有子结点:
MsgBox tvwMyTree.Nodes(10).Children
尽管,一些属性不返回信息,作为子结点的属性,但是替代返回一个涉及其他的Node对象。例如,父结点属性返回父结点的任何
特定结点(只要这结点不是一个根结点)。由于这种涉及,你可以使用父结点调用任何方法或者设置属性,并应用到Node对象。
例如,下面的代码返回一个父结点的文本信息和引索属性。
MsgBox tvwMyTree.Nodes(10).Parent.Text
MsgBox tvmMyTree.Nodes(10).Parent.Index
提示: 使用set声明一个Node类型的对象变量使用涉及到其他的Node对象。例如,下面的代码设置一个Node对象变量涉及返回父结点
属性。接下来使用对象变量返回关系结点属性:
Dim tempNode As Node
Set tempNode=tvwMyTree.Nodes(10).Parent
MsgBox tempNode.Text
MsgBox tempNode.Index
添加Node对象到Nodes搜索集
添加Node到树,使用add方法。这个方法包含2个参数,relative和relationship,其决定在哪里添加结点。第一个参数relative
命名结点;第二个参数relationship指定新结点和结点(relative)的关系。
例如,下面的代码添加一个结点”11 node“作为结点”7 node“的一个子结点。常数tvwChild指定新结点是一个子结点。
第三个参数赋值关键属性到新结点。
tvwMyTree.Nodes.Add "7 node",tvwChild,"11 node"
提示:使用set声明使用add方法使的调试你的代码更简单。