1 添加TreeView控件在“控件工具箱”中单击鼠标右键,从弹出的快捷菜单中选择“附加控件”(如图1所示),出现“附加控件”对话框。在该对话框中,找到“Microsoft TreeView Control,version 6.0”并选中前面的复选框,如图2所示,单击“确定”按钮。
图1:在工具箱中单击右键,选择“附加控件”。
图2:在“附加控件”对话框选中“TreeView控件”。
注:下面的示例中可能要用到ImageList控件和ImageCombo控件,因此,将这两个控件也添加到“控件工具箱”中。最后的控件工具箱如图3所示。
图3:添加控件后的工具箱。
2 TreeView控件概述
TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。
创建了TreeView控件之后,可以通过设置属性与调用方法对各Node对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折叠Node对象来显示或隐藏所有子节点。Collapse、Expand和NodeClick三个事件也提供了编程功能。
2.1 常用属性(1) Nodes属性返回对TreeView控件的Node对象的集合的引用。
[语法] object.Nodes
object代表一个对象表达式。可以使用标准的集合方法(例如:Add和Remove方法)操作Node对象,可以按其索引或存储在Key属性中的唯一键来访问集合中的每个元素。
(2) Style属性返回或设置图形类型(图象、文本、+/-号、直线)以及出现在TreeView控件中每一Node对象上的文本的类型。
[语法] object.Style [ = number]
Object代表一个对象表达式,number指定图形类型的整数,number 的设置值是:0仅为文本;1为图象和文本,2为+/-号和文本;3为+/- 号、图象和文本;4为直线和文本;5为直线、图象和文本;6为直线、+/-号和文本;7(缺省)为直线、+/- 号、图象和文本。若Style属性设置为包含直线的值,则LineStyle属性就确定了直线的外观;如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。
(3)Sorted属性返回或设置值,此值确定Node对象的根节点或子节点是否按字母顺序排列。
[语法] object.Sorted [ = boolean]
Object代表一个对象表达式。boolean的设置值是:True——Node对象根据它们的 Text 属性按字母顺序排列。其Text属性由数字开始的Node对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。False——Node对象不排序。Sorted属性有两种用法,第一,在TreeView控件的根(顶)层排列Node对象;第二,对任何单个Node对象的子节点排序。
设置 Sorted 属性为True仅对当前Nodes集合排序。在TreeView控件中添加新的Node对象时,必须再次设置Sorted属性为 True,以便对添加的Node对象排列。
(4) appearance属性:设置控件是否以3D效果显示。
(5) checkboxes属性:决定在节点的每一项的旁边是否显示一个复选框,类似checkbox控件的作用。
(6) hottracking属性:当鼠标指针经过某个条目时,这些条目是否突出显示,类似网页的超链接效果。
(7) labeledit属性:决定用户是否能编辑控件中列出的项目,此项如果不想被改变,可将属性值设置为1
(8) linestyle属性:设置列出的每项之间的行样式,即,如果为1,则当前项下还有子项的时候,它的前面会显示“+”号,如果值为2,则不显示“+”
(9) singlesel属性:设置在树中选择新的条目时,是否展开此条目并收拢前一个条目,即设置为True时,并且当前选中的条目有子项的时候,会把子项展开,并将原来选中的条目收拢。
(10) style属性:设置Treeview控件的每个列表的组成方式,比如“图片”+“文本”方式,等等,这样可以把Treeview设置得更美观一些。
2.2 常用方法(1) Add方法
在Treeview控件的Nodes集合中添加一个Node对象。
[语法] object.Add(relative, relationship, key, text, image, selectedimage)
[说明]
参数Object是必需的,为对象表达式。
参数Relative是可选的,代表已存在的Node对象的索引号或键值。
参数relationship是可选的,代表新节点与已存在的节点间的关系,指定的Node对象的相对位置。relationship的设置值是:
0——tvwFirst首节点,该Node和在relative中被命名的节点位于同一层,并位于所有同层节点之前。
1——tvwLast最后的节点,该Node和在relative中被命名的节点位于同一层,并位于所有同层节点之后。任何连续地添加的节点可能位于最后添加的节点之后。
2——tvwNext(缺省),下一个节点,该Node位于在relative中被命名的节点之后。
3——tvwPrevious,前一个节点,该Node位于在relative中被命名的节点之前。
4——tvwChild(缺省),子节点。该Node 为在relative中被命名的节点的子节点。
参数key是可选的,唯一的字符串,可用于用Item方法检索Node。
参数text 是必需的,在Node中出现的字符串。
参数image是可选的,代表一个图像或在ImageList控件中图象的索引。
参数selectedimage是可选的,代表一个图像或在ImageList控件中图象的索引,在 Node被选中时显示。
注意:如果在relative中没有被命名的Node对象,则新节点被放在节点顶层的最后位置。
(2) GetVisibleCount方法
返回固定在TreeView控件的内部区域的Node对象的个数。
[语法] object.GetVisibleCount
object代表一个对象表达式,Node对象的个数取决于在一个窗口中能固定多少行。总的行数取决于控件的高度和Font对象的Size属性。可以使用GetVisibleCount属性确保可视的最小行数,这样可以精确地访问一个层。如果最小行数是不可视的,可以用Height属性重新设置TreeView的大小。
2.3 常用事件
NodeClick事件在一个Node对象被单击时发生。
[语法] Private Sub object_NodeClick(ByVal node As Node)
Object代表一个对象表达式,参数node是对被点取的Node对象的引用。
说明:在单击节点对象之外的TreeView控件的任何部位,标准的Click事件发生。当单击某个特定的Node对象时,NodeClick事件发生;NodeClick事件也返回对特定的Node对象的引用,在下一步操作之前,该引用可用来使这个Node对象可用。NodeClick事件发生在标准的Click事件之前。