使用 TreeView 控件
TreeView
TreeView 控件可以用来显示具有层次结构的数据,例如组织树、索引项、磁盘中的文件和目录等。
图 2.40 典型的 TreeView
可能的用途
创建用户可以操作的组织树。
创建能够显示至少两层或更多层的数据库树。
设置 Node 对象属性
“树”由一些层叠的“节点”分支构成,每个节点通常包括图象(用 Image 属性设置)和标签(由 Text 属性设置)。节点的图象由与 TreeView 控件相关联的 ImageList 控件提供。关于与其它控件共同使用 ImageList 控件的更多信息,请参阅“使用 ImageList 控件”。
节点可被展开或折回,这取决于它是否有子节点,即从它出发的节点。在最上层是“根”节点,每个“根”节点可以具有任何数目的子节点。节点的总数没有限制(除非受到机器资源的限制)。图 2.41 显示了具有两个根节点的树。其中“Root 1”有三个子节点,“Child 3”自己又有一个子节点。“Root 2”有子节点,由“+”号指出,但没有展开。
图 2.41 根和子节点
树中的每个节点实际上是可编程的 Node 对象,它属于 Nodes 集合。同在其它集合中一样,集合的每个成员具有唯一的 Index 和 Key 属性,通过这些属性可以访问相应节点的其它属性。例如,下面的代码用特定节点的 Index (“7”) 设置其 Image 和 Text 属性:
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
然而,另外一些属性与 Children 属性不同,它们不返回信息,但返回对其它节点对象的引用。例如,Parent 属性返回对特定节点(只要该节点不是根节点)的父节点的引用。利用该引用,可以调用适用于 Node 对象的任何方法或设置属性来管理其父节点。例如,下面的代码返回父节点的 Text 和 Index 属性:
MsgBox tvwMyTree.Nodes(10).Parent.Text
MsgBox tvwMyTree.Nodes(10).Parent.Index
提示 使用 Set 语句处理 Node 类型的对象,以管理对其它 Node 对象的引用。例如,下面的代码将 Node 对象变量设置为 Parent 属性返回的引用。然后用该对象变量返回相关节点的属性:
Dim tempNode As Node '声明对象变量。
'将对象变量设置为返回的引用。
Set tempNode = tvwMyTree.Nodes(10).Parent
MsgBox tempNode.Text '返回父节点的 Text。
MsgBox tempNode.Index '返回父节点的 Index。
向 Nodes 集合中添加 Node 对象
要将 Node 添加到树中,可以用 Add 方法(Nodes 集合)。该方法包括两个参数,relative 和 relationship,它们确定节点被加到何处。第一个参数 relative 指定节点名称,第二个参数 relationship 指定新加入的节点与名为 relative 的节点之间的关系。
例如,下面的代码添加名为“11 node”的节点,并使其成为名为“7 node”的节点的子节点。固有常数 tvwChild 指出新节点是前一参数所指定的节点的子节点。第三个参数设置新节点的 Key 属性。
tvwMyTree.Nodes.Add "7 node", tvwChild, "11 node"
其它可能的关系包括:
常数 值 描述
tvwLast 1 该 Node 被放在所有与 relative 节点同级的节点之后。
tvwNext 2 该 Node 放在名为 relative 的节点之后。
tvwPrevious 3 该 Node 放在名为 relative 的节点之前。
tvwChild 4 该 Node 成为名为 relative 节点的子节点。
例如,假设已存在三个节点,如果想将第四个节点放在第二个和第三个节点之间,则代码如下:
'假设第二个节点的 Key 值为“2 node”。
tvwMyTree.Nodes.Add "2 node", tvwNext
Add 方法的其它参数是 key、text 和 image。用这些参数,可以在创建 Node 对象时,为其赋予 Key、Text 和 Image 属性。
详细信息 关于 Nodes 集合 Add 方法的更多信息,请在索引搜索中键入“Add 方法”并单击“Add 方法 (Nodes 集合)”,参阅“Add 方法”。
添加节点的第二个方法是:声明 Node 类型的对象变量,然后使用带 Add 方法的 Set 语句。该 Set 语句将该对象变量设置为新节点。然后就可以用该对象变量设置节点的属性,如下所示:
Dim nodX As Node
Set nodX = tvwMyTree.Nodes.Add("10 node", tvwChild)
nodX.Key = "11 node"
nodX.Text = "IEEE"
nodX.Image = "closed"
提示 使用带 Add 的 Set 语句,可使代码可读性强、容易调试。然而,如果使用 Add 方法及其参数添加节点,代码速度更快。
Listview
ListView 控件可使用四种不同视图显示项目。通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。
语法
ListView
说明
可使用 ListView 控件将称作 ListItem 对象的列表条目组织成下列四种不同的视图之一:
大(标准)图标
小图标
列表