TreeView 控件帮助文件


1. TreeView 控件           
TreeView 控件显示 Node 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。
 
语法
Treeview
 
说明
创建了 TreeView 控件之后,可以通过设置属性与调用方法对各 Node 对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。Collapse、Expand 和 NodeClick 三个事件也提供编程功能。
 
Node 对象使用 Root、Parent、Child、FirstSibling、Next、Previous 和 LastSibling 属性。在代码中可通过检索对 Node 对象的引用,从而在树上定位。也可以使用键盘定位。UP ARROW 键和 DOWN ARROW 键向下循环穿过所有展开的 Node 对象。从左到右、从上到下地选择 Node 对象。若在树的底部,选择便跳回树的顶部,必要时滚动窗口。RIGHT ARROW 键和 LEFT ARROW 键也穿过所有展开的 Node 对象,但是如果选择了未展开的 Node之后再按 RIGHT ARROW 键,该 Node 便展开;第二次按该键,选择将移向下一个 Node。相反,若扩展的 Node 有焦点,这时再按 LEFT ARROW 键,该 Node 便折回。如果按下 ANSI 字符集 中的键,焦点将跳转至以那个字母开头的最近的 Node。后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。
 
控件的外观有八种可用的替换样式,它们是文本、位图、直线和 +/- 号的组合,Node 对象可以任一种组合出现。
 
TreeView 控件使用由 ImageList 属性指定的 ImageList 控件,来存储显示于 Node 对象的位图和图标。任何时刻,TreeView 控件只能使用一个 ImageList。这意味着,当 TreeView 控件的 Style 属性被设置成显示图像的样式时,TreeView 控件中每一项的旁边都有一个同样大小的图像。
 
发行注意 TreeView 控件是 MSCOMCTL.OCX 文件中的一组 ActiveX 控件的一部分。为了在应用程序中使用 TreeView 控件,必须将 MSCOMCTL.OCX 文件添加到工程中。在发行应用程序时,要在用户的 Microsoft Windows System 或 System32 目录中安装 MSCOMCTL.OCX 文件。
 
2. Sorted 属性(TreeView 控件)     
返回或设置一值,此值确定 Node 对象的子节点是否按字母顺序排列。
返回或设置一值,此值确定 TreeView 控件的根层节点是否按字母顺序排列。
 
语法
object.Sorted [ = boolean]
Sorted 属性语法包含下面部分:
 
部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
boolean 布尔表达式,表示 Node 对象是否已被排序如“设置值”中描述。
 
 
设置值
boolean 的设置值是:
设置值 描述
True Node 对象根据它们的 Text 属性按字母顺序排列。其 Text 属性由数字开始的 Node 对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。
False Node 对象不排序。
 
说明
Sorted 属性有两种用法,第一,在 TreeView 控件的根(顶)层排列 Node 对象,第二,对任何单个 Node 对象的立即子节点排序。例如,下面的代码是对 TreeView 控件的根节点排序:
 
Private Sub Command1_Click()
   TreeView1.Sorted = True   '顶层 Node 对象被排序。
End Sub
 
下面的例子表示创建 Node 对象时如何设置 Sorted 属性:
 
Private Sub Form_Load()
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(,,,"Parent Node")
   nodX.Sorted = True
End Sub
 
设置 Sorted 属性为 True 仅对当前 Nodes 集合排序。在 TreeView 控件中添加新的 Node 对象时,必须再次设置 Sorted 属性为 True,以便对添加的 Node 对象排列。
 
Sorted 属性示例
此例子在树上添加几个 Node 对象。单击一 Node 时,用户将被询问是否想对 Node 排序。为试用此例,在窗体上放置 TreeView 控件,并粘贴下面的代码到窗体的声明部分,运行此例,单击 Node 对其排序。
 
Private Sub Form_Load()
   '用几个未排序的节点对象创建一树。
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(, , , "Adam")
   Set nodX = TreeView1.Nodes.Add(1, tvwChild, "z", "Zachariah")
   Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Noah")
   Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Abraham")
   Set nodX = TreeView1.Nodes.Add("z", tvwChild, , "Stan")
   Set nodX = TreeView1.Nodes.Add("z", tvwChild, , "Paul")
   Set nodX = TreeView1.Nodes.Add("z", tvwChild, "f", "Frances")
   Set nodX = TreeView1.Nodes.Add("f", tvwChild, , "Julie")
   Set nodX = TreeView1.Nodes.Add("f", tvwChild, "c", "Carol")
   Set nodX = TreeView1.Nodes.Add("f", tvwChild, , "Barry")
   Set nodX = TreeView1.Nodes.Add("c", tvwChild, , "Yale")
   Set nodX = TreeView1.Nodes.Add("c", tvwChild, , "Harvard")
   nodX.EnsureVisible
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Dim answer As Integer
   '校验是否有子节点。  
   If Node.Children > 1 Then '有多个子节点。
      answer = MsgBox("Sort this node?", vbYesNo)  '提示询问用户。
      If answer = vbYes Then   '用户想排序。
         Node.Sorted = True
      End If
   End If
End Sub
 
3. EnsureVisible 方法 
这个方法确保指定的 ListItem 或 Node 对象是可视的。如果需要,这个方法可展开 Node 对象并滚动 TreeView 控件。该方法仅可滚动 ListView 控件。
 
语法
object.EnsureVisible
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
返回值
值 描述
True 如果 ListView 或 TreeView 控件必须滚动与/或扩展以显露该对象,该方法返回 True。
False 如果不需滚动与/或展开,该方法返回 False。
 
说明
一个特定的 Node 或 ListItem 对象可能深藏于 TreeView 或 ListView 控件中,当要使其为可视时,使用 EnsureVisible 方法。
如果 Scroll 属性设置为 False,则该方法将不会在 TreeView 控件上起作用。
 
4. Node 对象和 Nodes 集合
Node 对象是 TreeView 控件中的一项,它包含图像和文本。
Nodes 集合包含一个或多个 Node 对象。
 
语法
treeview.Nodes
treeview.Nodes.Item(index)
以上语法行,按照标准集合语法分别引用集合与集合中的单独元素。
treeview 对象表达式,其值是 TreeView 控件。
index 整数或字符串,它唯一地标识 Nodes 集合的一个成员。整数是 Index 属性的值,字符串是 Key 属性的值。
 
说明
节点可包含文本和图片。然而,要使用图片,必须用 ImageList 属性关联一个 ImageList 控件。
图片可以根据节点的状态而改变;例如,如果将 SelectedImage 属性设置为来自关联的 ImageList 的图像,则被选中的节点可拥有与未选中的节点不同的图片。
 
 
5. Add 方法(Nodes 集合)   
在 Treeview 控件的 Nodes 集合中添加一个 Node 对象。
 
语法
 
object.Add(relative, relationship, key, text, image, selectedimage)
 
Add 方法的语法包含下面部分:
 
描述
object 必需的。对象表达式,其值是“应用于”列表中的一个对象
relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。
relationship 可选的。指定的 Node 对象的相对位置,如设置值中所述。
key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。
text 必需的。在 Node 中出现的字符串。
image 可选的。在关联的 ImageList 控件中的图像的索引。
selectedimage  可选的。在关联的 ImageList 控件中的图像的索引,在 Node 被选中时显示。
 
设置值
relationship 的设置值是:
 
常数 值 描述
tvwFirst 0 首的节点。该 Node 和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之前。
tvwLast 1 最后的节点。该 Node 和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之后。任何连续地添加的节点可能位于最后添加的节点之后
tvwNext 2 (缺省)下一个节点。该 Node 位于在 relative 中被命名的节点之后。
tvwPrevious 3 前一个节点。该 Node 位于在 relative 中被命名的节点之前。
tvwChild 4 (缺省)子节点。该 Node 成为在 relative 中被命名的
节点的子节点。
 
注意 如果在 relative 中没有被命名的 Node 对象,则新节点被放在节点顶层的最后位置。
 
说明
Nodes 集合是一个基于 1 的集合。
 
在添加 Node 对象时,它被指派一个索引号,该索引号被存储在 Node 对象的 Index 属性中。这个最新成员的 Index 属性值就是 Node 集合的 Count 属性的值。
 
因为 Add 方法返回对新建立的 Node 对象的引用,所以使用这个引用来设置新 Node 的属性十分方便。以下例子添加几个具有相同属性的 Node 对象:
 
Dim nodX As Node   '声明对象变量。
Dim I as Integer   '声明计数器变量。
For I = 1 to 4
   Set nodX = TreeView1.Nodes.Add(,,,"Node " & Cstr(i))
   '使用引用来设置其它属性,如 Enabled。
   nodX.Enabled = True
   '把图像属性设置为在关联的 ImageList 中的图像 3。
   nodX.ExpandedImage = 3
Next I
 
Add 方法示例
以下例子给 TreeView 控件添加两个 Node 对象。为试用此例,在窗体上安放一个 TreeView 控件,并在窗体的声明部分中粘贴下面的代码。运行此例,且单击 Node 对象以展开它。
 
Private Sub Form_Load()
   '设置 Treeview 控件属性。
   TreeView1.LineStyle = tvwRootLines  ' Linestyle 1
 
   '添加 Node 对象。
   Dim nodX As Node    '声明 Node 变量。
   '带有文本 'Root' 的第一个节点。
   Set nodX = TreeView1.Nodes.Add(, , "r", "Root")
 
   '下一个节点是节点 1 ("Root") 的子节点。
   Set nodX = TreeView1.Nodes.Add("r", tvwChild, "child1", "Child")
 
End Sub
 
6. Root 属性(Node 对象)   
返回对所选 Node 的根 Node 对象的引用。
 
语法
object.Root
object 所在处代表是对象表达式,其值是“应用于”列表中的对象
 
说明
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 各属性全将返回对另一个 Node 对象的引用。因此,可以同时引用并执行对 Node 的操作,如下所示:
 
With TreeView1.Nodes(x).Root
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为被引用的 Node,如下所示:
 
Dim NodRoot As Node
'得到对节点 x 的根的引用。
Set NodRoot = TreeView1.Nodes(x).Root
'用此引用执行对根节点的操作。
With nodRoot
   .Text = "New text"   '改变文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage。
End With
 
Root 属性示例
这个例子添加几个 Node 对象到 TreeView 控件,当单击 Node 时,代码沿树向上漫游直到 Root 节点,并且显示每一个 Parent 节点的文本。为试用此例,在窗体上放置 TreeView 控件,并粘贴下面的代码到窗体的声明部分。运行此例,并单击 Node。
 
Private Sub Form_Load()
   Dim nodX As Node   '创建树。
   Set nodX = TreeView1.Nodes.Add(,,"r", "Root")
   Set nodX = TreeView1.Nodes.Add(,,"p", "Parent")
   Set nodX = TreeView1.Nodes.Add("p",tvwChild,, "Child 1")
   nodX.EnsureVisible   '显示全部节点。
   Set nodX = TreeView1.Nodes.Add("r",tvwChild,"C2", "Child 2")
   Set nodX = TreeView1.Nodes.Add("C2",tvwChild,"C3", "Child 3")
   Set nodX = TreeView1.Nodes.Add("C3",tvwChild,, "Child 4")
   Set nodX = TreeView1.Nodes.Add("C3",tvwChild,, "Child 5")
   nodX.EnsureVisible   '显示全部节点。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Dim n As Integer
   Dim strParents As String    '信息变量。
   n = Node.Index   '设置 n 为被点取节点的索引。
   strParents = Node.Text & vbLF
   While n <> Node.Root.Index
      strParents = strParents & _
      TreeView1.Nodes(n).Parent.Text & vbLF
      '设置 n 为下一个父节点的索引。
      n = TreeView1.Nodes(n).Parent.Index
   Wend
   MsgBox strParents
End Sub
 
7. Parent 属性(Node 对象)     
这个属性返回或设置 Node 对象的父对象。仅在运行时可用。
 
语法
object.Parent[ = node]
Parent 属性的语法包含下面部分:
 
部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
node 变成该对象的父对象的 Node 对象。
 
说明
在运行时,设置这个属性为一个对象的操作不能搞成一个循环,否则便发生错误。例如,不能将任何 Node 设置成为其后代的子 Node。
 
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:
 
With TreeView1.Nodes(x).Parent
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为引用的 Node,如下所示:
 
Dim NodParent As Node
'获取对节点 x 的父节点的引用。
Set NodParent = TreeView1.Nodes(x).Parent
'使用这个引用来执行对父节点的操作。
With nodParent
   .Text = "New text"   '改变该文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage。
End With
 
Parent 属性示例
这个例子为 TreeView 控件添加几个 Node 对象。在选择了 Node 对象后,可以单击并拖动它到任何其它 Node,以使它成为该目标 Node 的子节点。为试用此例,要在窗体上安放 TreeView 和 ImageList 控件,并在该窗体的声明部分粘贴该代码。运行此例,并将一些 Node 对象拖动到其它 Node 对象之上来观察结果。
 
'声明全局变量。
Dim indrag As Boolean '指示拖放操作的标志。
Dim nodX As Object '要拖动的项。
 
Private Sub Form_Load()
   '在 Imagelist 控件中加载一个位图。
   Dim imgX As ListImage
   Dim BitmapPath As String
   BitmapPath = "icons/mail/mail01a.ico"
   Set imgX = ImageList1.ListImages.Add(, , LoadPicture(BitmapPath))
  
   '初始化 TreeView 控件并创建几个节点。
   TreeView1.ImageList = ImageList1
   Dim nodX As Node      '创建树。
   Set nodX = TreeView1.Nodes.Add(, , , "Parent1", 1)
   Set nodX = TreeView1.Nodes.Add(, , , "Parent2", 1)
   Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 1", 1)
   Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 2", 1)
   Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 3", 1)
   Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 4", 1)
   Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Child 5", 1)
   nodX.EnsureVisible '展开树,显示全部节点。
End Sub
 
Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
   Set nodX = TreeView1.SelectedItem '设置要拖动的项。
   Set TreeView1.DropHighlight = Nothing
End Sub
 
Private Sub TreeView1_MouseMove _
(Button As Integer, Shift As Integer, x As Single, y As Single)
   If Button = vbLeftButton Then '指示拖动操作。
      indrag = True '设置标志为 true。
      '用 CreateDragImage 方法设置拖动图标。
      TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
      TreeView1.Drag vbBeginDrag '拖动操作。
   End If
End Sub
 
Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)
   '如果用户没移动鼠标,或在无效区释放它。
   If TreeView1.DropHighlight Is Nothing Then
      indrag = False
      Exit Sub
   Else
      '设置被拖动的节点的 parent 属性为目标节点。
      On Error GoTo checkerror '阻止循环错误。
      Set nodX.Parent = TreeView1.DropHighlight
      Cls
      Print TreeView1.DropHighlight.Text & _
      " is parent of " & nodX.Text
      '释放 DropHighlight 引用。
      Set TreeView1.DropHighlight = Nothing
      indrag = False
      Exit Sub '如未发生错误则退出。
   End If
 
checkerror:
   '定义表示 Visual Basic 错误代码的常数。
   Const CircularError = 35614
   If Err.Number = CircularError Then
      Dim msg As String
      msg = "A node can't be made a child of its own children."
      '显示带有一个感叹号图标
      '和“确定”与“取消”按钮的消息框。
      If MsgBox(msg, vbExclamation & vbOKCancel) = vbOK Then
         '释放 DropHighlight 引用。
         indrag = False
         Set TreeView1.DropHighlight = Nothing
         Exit Sub
      End If
   End If
End Sub
 
Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)
   Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
End Sub
 
8. Child 属性(Node 对象)     
返回对 TreeView 控件中的 Node 对象的第一个子节点的引用。
 
语法
object.Child
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
说明
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性全都返回对另一个 Node 对象的引用。所以,可同时引用并执行对 Node 的操作,如下所示:
 
With TreeView1.Nodes(TreeView1.SelectedItem.Index).Child
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为引用的 Node,如下所示:
 
Dim NodChild As Node
'得到对被选中的节点的子节点的引用。
Set NodChild = TreeView1.Nodes(TreeView1.SelectedItem.Index).Child
'使用这个引用执行对子节点的操作。
With nodChild
   .Text = "New text"   '改变文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage。
End With
 
Child 属性示例
这个例子创建几个 Node 对象。在单击 Node 对象时,代码首先使用 Children 属性确定 Node 是否有子节点。如果有,窗体的标题就显示 Child 节点的文本。
 
Option Explicit
Private Sub Form_Load()
'这一代码创建一棵带有三个 Node 对象的树。
   TreeView1.Style = tvwTreelinesPlusMinusText ' Style 6.
   TreeView1.LineStyle = tvwRootLines  'Linestyle 1.
 
   '添加几个Node对象。
   Dim nodX As Node    '创建变量。
 
   Set nodX = TreeView1.Nodes.Add(, , "r", "Root")
   Set nodX = TreeView1.Nodes.Add("r", tvwChild, "c1", "Child 1")
 
   nodX.EnsureVisible '显示全部节点。
   Set nodX = TreeView1.Nodes.Add("c1", tvwChild, "c2", "Child 2")
   Set nodX = TreeView1.Nodes.Add("c1", tvwChild, "c3", "Child 3")
   nodX.EnsureVisible '显示全部节点。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   '如果该节点确有子节点,则显示
   '该子节点的文本。
   If Node.Children Then
      Caption = Node.Child.Text
   End If
End Sub
 
9. Children 属性     
这个属性返回包含在 Node 对象中的各子 Node 对象的个数。
 
语法
object.Children
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
说明
在执行一个影响子节点的操作之前,可用 Children 属性检查 Node 对象是否有子节点。例如,以下代码在检索第一个 Node 的 Text 属性之前,使用 Child 属性检查子节点的存在。
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   If Node.Children > 0 Then
      MsgBox Node.Child.Text
   End If
End Sub
 
Children 属性示例
这个例子在 TreeView 控件中放置几个 Node 对象。这组代码检查 Node 是否有子节点。如果有,则显示子节点的文本。为试用此例,在窗体上安放一个 TreeView 控件,并在窗体的声明部分中粘贴下面的代码。运行此例,单击 Node 对象以选择它,然后单击该窗体来察看 Node 对象的子节点的文本。
 
Option Explicit
Private Sub Form_Click()
   Dim strC As String
   Dim N As Integer
   If TreeView1.SelectedItem.Children > 0 Then '有子节点。
 
      '获取第一个子节点的文本,并将 N 设置为它的索引值。
      strC = TreeView1.SelectedItem.Child.Text & vbLF
      N = TreeView1.SelectedItem.Child.Index
 
      '若 N 不是子节点的最后相邻节点的索引,
      '则获取下一个相邻节点的文本。
      While N <> TreeView1.SelectedItem.Child.LastSibling.Index
         strC = strC & TreeView1.Nodes(N).Next.Text & vbLF
         '重置 N 为下一个相邻节点的索引。
         N = TreeView1.Nodes(N).Next.Index
      Wend
      '显示结果。
      MsgBox "Children of " & TreeView1.SelectedItem.Text & _
      " are: " & vbLF & strC
   Else '没有子节点。
      MsgBox TreeView1.SelectedItem.Text & " has no children"
   End If
End Sub
 
Private Sub Form_Load()
   TreeView1.BorderStyle = 1  '确保边界是可视的。
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(,,"d","Dates")
   Set nodX = TreeView1.Nodes.Add("d",tvwChild,"d89","1989")
   Set nodX = TreeView1.Nodes.Add("d",tvwChild,"d90","1990")
 
   '创建 1989 节点的子节点。
   Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"John")
   Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"Brent")
   Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"Eric")
   Set nodX = TreeView1.Nodes.Add("d89",tvwChild, ,"Ian")
   nodX.EnsureVisible '显示所有节点。
 
   '创建 1990 节点的子节点。
   Set nodX = TreeView1.Nodes.Add("d90",tvwChild, ,"Randy")
   Set nodX = TreeView1.Nodes.Add("d90",tvwChild, ,"Ron")
   nodX.EnsureVisible '显示所有节点。
End Sub
 
10. FirstSibling 属性(Node 对象)
这个属性返回对 TreeView 控件中的 Node 对象的第一个相邻对象的引用。
 
语法
object.FirstSibling
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象
 
说明
第一个相邻节点是出现在一个节点层中第一个位置上的 Node。实际上到底是哪一个 Node 出现在第一个位置取决于在那一层上的 Node 对象是否被排序,这由 Sorted 属性确定。
 
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:
 
With TreeView1.Nodes(x).FirstSibling
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为引用的 Node,如下所示:
 
Dim NodFirstSib As Node
'获取 Node x 的第一个相邻节点的引用。
Set NodFirstSib = TreeView1.Nodes(x).FirstSibling
'使用这个引用执行对第一个相邻 Node 的操作。
With nodFirstSib
   .Text = "New text"   '改变文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage.
End With
 
FirstSibling 属性示例
这个例子给 TreeView 控件添加几个节点。FirstSibling 属性,与 Next 属性和 LastSibling 属性联用,被用于在点取的 Node 对象的层中定位。为试用此例,要在窗体上安放一个 TreeView 控件并在窗体的声明部分粘贴该代码。运行此例,单击不同的节点来观察返回的是什么。
 
Private Sub Form_Load()
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(,,"dad","Mike") '第一个相邻的节点。
   Set nodX = TreeView1.Nodes.Add(,,"mom","Carol")
   Set nodX = TreeView1.Nodes.Add(,,,"Alice")
  
   'Marsha 是第一个相邻节点。
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Marsha")
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Jan")
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Cindy")
   nodX.EnsureVisible '显示全部节点。
 
   'Greg 是第一个相邻节点。
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Greg")   
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Peter")  
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Bobby")
   nodX.EnsureVisible '显示全部节点。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Dim strText As String
   Dim n As Integer
   '设置 n 为第一个相邻节点的索引。
   n = Node.FirstSibling.Index
   '在字符串变量中安放第一个相邻节点文本和换行。
   strText = Node.FirstSibling.Text & vbLF
   While n <> Node.LastSibling.Index
   '在 n 不是最后相邻节点的索引时,转到
   '下一个相邻节点并将它的文本放到字符串变量中。
      strText = strText & TreeView1.Nodes(n).Next.Text & vbLF
   '设置 n 为下一个节点的索引。
      n = TreeView1.Nodes(n).Next.Index
   Wend
   MsgBox strText   '显示结果。
End Sub
 
11. LastSibling 属性(Node 对象)
这个属性返回对 TreeView 控件中的 Node 对象的最后相邻节点的引用。
 
语法
object.LastSibling
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
说明
最后的相邻节点是出现在一个节点层中最后位置上的 Node。实际上哪个 Node 出现在最后位置上取决于在那一层上的 Node 是否被排序,这由 Sorted 属性所确定。为了排序同一层上的 Node 对象,应把 Parent 节点的 Sorted 属性设置为 True。请参阅下面的代码:
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Node.Parent.Sorted = True
End Sub
 
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性均返回对另一个 Node 对象的引用。所以,可以同时引用并执行对一个 Node 的操作,如下所示:
 
With TreeView1.Nodes(x).LastSibling
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为引用的 Node,如下所示:
 
Dim NodLastSib As Node
'获得对节点 x 的最后相邻节点的引用。
Set NodLastSib = TreeView1.Nodes(x).LastSibling
'使用这个引用执行对相邻节点的操作。
With nodLastSib
   .Text = "New text"   '改变文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage。
End With
 
LastSibling 属性示例
这个例子为 TreeView 控件添加几个 Node 对象。LastSibling 属性与 Next 属性和 FirstSibling 属性联用,在点取的 Node 对象的层上定位。为试用此例,要在窗体上安放 TreeView 控件,并在窗体的声明部分粘贴该代码。运行此例,并单击不同的节点,来观察返回的是什么。
 
Private Sub Form_Load()
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(,,"dad","Mike")
   Szet nodX = TreeView1.Nodes.Add(,,"mom","Carol")
   'Alice 是最后的相邻节点。
   Set nodX = TreeView1.Nodes.Add(,,,"Alice")
 
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Marsha")
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Jan")
   'Cindy 是最后的相邻节点。
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Cindy")
   nodX.EnsureVisible '显示全部节点。
 
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Greg")    
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Peter")  
   'Bobby 是最后的相邻节点。
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Bobby")
   nodX.EnsureVisible '显示全部节点。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Dim strText As String
   Dim n As Integer
   '设置 n 为第一个相邻节点的索引。
   n = Node.FirstSibling.Index
   '在字符串变量中安放第一个相邻节点的文本和换行。
   strText = Node.FirstSibling.Text & vbLF
   While n <> Node.LastSibling.Index
   '当 n 不是最后相邻节点的索引时,转向下一个相邻的节点
   '并将它的文本安放到字符串变量中。
      strText = strText & TreeView1.Nodes(n).Next.Text & vbLF
   '设置 n 为下一个节点的索引。
      n = TreeView1.Nodes(n).Next.Index
   Wend
   MsgBox strText '显示结果。
End Sub
 
12. Previous 属性(Node 对象)     
返回对 Node 对象的前一个相邻节点的引用。
 
语法
object. Previous
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
说明
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性全部返回对另一个 Node 对象的引用,因此,可以同时引用并执行对 Node 的操作,如下所示:
 
With TreeView1.Nodes(x).Previous
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为引用的 Node,如下所示:
 
Dim NodPrevious As Node
'获得对节点 x 的前一个相邻节点的引用。
Set NodChild = TreeView1.Nodes(x).Previous
'用此引用执行对前一个相邻节点的操作。
With nodPrevious
   .Text = "New text"   '改变文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage。
End With
 
Previous 属性示例
这个例子添加几个节点到 TreeView 控件。在与 LastSibling 属性和 FirstSibling 属性联用时,Previous 属性用于在被点取的 Node 对象的层上定位。为试用此例,在窗体上放置 TreeView 控件,并粘贴下面的代码到窗体的声明部分。运行此例,并单击各个节点来查看返回什么。
 
Private Sub Form_Load()
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(, , "r", "Root")
   Set nodX = TreeView1.Nodes.Add(, , "p", "parent")
 
   Set nodX = TreeView1.Nodes.Add("r", tvwChild, , "Child 1")
   Set nodX = TreeView1.Nodes.Add("r", tvwChild, , "Child 2")
   Set nodX = TreeView1.Nodes.Add("r", tvwChild, , "Child 3")
   nodX.EnsureVisible '显示所有节点。
 
   Set nodX = TreeView1.Nodes.Add("p", tvwChild, , "Child 4")
   Set nodX = TreeView1.Nodes.Add("p", tvwChild, , "Child 5")
   Set nodX = TreeView1.Nodes.Add("p", tvwChild, , "Child 6")
   nodX.EnsureVisible '显示全部节点。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Dim strText As String
   Dim n As Integer
   '设置 n 为最后的相邻节点的索引。
   n = Node.LastSibling.Index
   '把最后的相邻节点的文本和换行放到字符串变量中。
   strText = Node.LastSibling.Text & vbLF
   While n <> Node.FirstSibling.Index
      '当 n 不是第一个相邻节点的索引时,
      '转向前一个相邻节点,并把它的文本放到字符串变量中。
      strText = strText & TreeView1.Nodes(n).Previous.Text & vbLF
      '设置 n 为前一个相邻节点的索引。
      n = TreeView1.Nodes(n).Previous.Index
   Wend
   MsgBox strText '显示结果。
End Sub
 
13. Next 属性(Node 对象)
这个属性返回对 TreeView 控件的 Node 对象的下一个相邻 Node 的引用。
 
语法
object.Next
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
说明
Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性均返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:
 
With TreeView1.Nodes(x).Child
   .Text = "New text"
   .Key = "New key"
   .SelectedImage = 3
End With
 
也可以将对象变量设置为引用的 Node,如下:
 
Dim NodChild As Node
'获得对节点 x 的子节点的引用。
Set NodChild = TreeView1.Nodes(x).Child
'使用这个引用来执行对子节点的操作。
With nodChild
   .Text = "New text"   '改变文本。
   .Key = "New key"   '改变键。
   .SelectedImage = 3   '改变 SelectedImage.
End With
 
Next 属性示例
这个例子为 TreeView 控件添加几个 Node 对象。LastSibling 属性和 Next 属性与 FirstSibling 属性联用,在点取的 Node 对象的层上定位。为试用此例,要在窗体上安放一个 TreeView 控件,并在窗体的声明部分粘贴该代码。运行此例,单击不同的节点来观察返回的是什么。
 
Private Sub Form_Load()
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(,,"dad","Mike")
   Set nodX = TreeView1.Nodes.Add(,,"mom","Carol")
   'Alice 是最后的相邻节点。
   Set nodX = TreeView1.Nodes.Add(,,,"Alice")
 
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Marsha")
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Jan")
   'Cindy 是最后的相邻节点。
   Set nodX = TreeView1.Nodes.Add("mom",tvwChild,,"Cindy")
   nodX.EnsureVisible '显示全部节点。
 
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Greg")   
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Peter")  
   'Bobby 是最后的相邻节点。
   Set nodX = TreeView1.Nodes.Add("dad",tvwChild,,"Bobby")
   nodX.EnsureVisible '显示全部节点。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   Dim strText As String
   Dim n As Integer
   '设置 n 为第一个相邻节点的索引。
   n = Node.FirstSibling.Index
   '在字符串变量中安放第一个相邻节点的文本和换行。
   strText = Node.FirstSibling.Text & vbLF
   '当 n 不是最后相邻节点的索引时,转向下一个相邻节点,
   '并将其文本安放到字符串变量中。
   While n <> Node.LastSibling.Index
      strText = strText & TreeView1.Nodes(n).Next.Text & vbLF
   '设置 n 为下一个节点的索引。
      n = TreeView1.Nodes(n).Next.Index
   Wend
   MsgBox strText '显示结果。
End Sub
 
14. FullPath 属性
这个属性返回在 TreeView 控件中引用的 Node 对象的完整限定路径。当赋予该属性为字符串变量时,该字符串被设为具有指定索引的 FullPath 节点。
 
语法
object.FullPath
object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。
 
说明
完整限定路径是引用的 Node 对象的 Text 属性中的文本与它的所有前辈的 Text 属性值的连接。PathSeparator 属性的值确定定界符。
 
FullPath 属性示例
这个例子为 TreeView 控件添加几个 Node 对象,并在每个对象被选中时显示其完整限定路径。为试用此例,要在窗体上安放一个 TreeView 控件并在窗体的声明部分粘贴该代码。运行此例,然后选择一个节点,单击窗体显示该 Node 对象的完整路径。
 
Private Sub Form_Load()
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(,,,"Root")
   Set nodX = TreeView1.Nodes.Add(1,tvwChild,,"Dir1")
   Set nodX = TreeView1.Nodes.Add(2,tvwChild,,"Dir2")
   Set nodX = TreeView1.Nodes.Add(3,tvwChild,,"Dir3")
   Set nodX = TreeView1.Nodes.Add(4,tvwChild,,"Dir4")
   nodX.EnsureVisible   '显示全部节点。
   TreeView1.Style = tvwTreelinesText '样式 4。
End Sub
 
Private Sub TreeView1_NodeClick(ByVal Node As Node)
   MsgBox Node.FullPath
End Sub
 
15. Selected 属性(ActiveX 控件)
返回或设置确定一个对象是否被选中的值。对于 ListItem 对象,Selected 属性不设置 SelectedItem 属性,这样就不会使对象被选中。它仅返回一值,表明是否已用其它方法选中了 ListItem 对象。
 
语法
object.Selected [ = boolean]
Selected 属性语法包含下面部分:
 
部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
boolean 布尔表达式,指明对象是否已被选中。
 
说明
用 Selected 属性编程选择指定的 Node 或 Tab 对象。一旦用此法选定了对象,就可对此对象执行各种操作,如设置各种属性及调用各种方法。
 
为选择指定的 Node 对象,必须通过它的 Index 属性或 Key 属性的值去引用它。下面的例子是在 TreeView 控件中选择指定的 Node 对象:
 
Private Sub Command1_Click()
   TreeView1.Nodes(3).Selected = True '选择对象。
   '用 SelectedItem 属性得到对该对象的引用。
   TreeView1.SelectedItem.Text = "Changed Text"
End Sub
 
在 ListView 控件中,SelectedItem 属性总是引用第一个选中的项,因此,如多个项被选中,必须遍历所有选中的项,以校验每个项的 Selected 属性。
 
注意 不用 Select 属性去编程选择 ListItem 对象,而用带有 SelectedItem 属性的 Set 语句,如:
 
Set ListView1.SelectedItem = ListView1.ListItems(1)
 
Selected 属性示例
这个例子添加几个 Node 对象到 TreeView 控件。当选定 Node 时,对选定的 Node 的引用被用来显示它的键。为试用此例,在窗体上放置 TreeView 控件,并粘贴下面的代码到窗体的声明部分。运行此例,选择 Node 并单击窗体。
 
Private Sub Form_Load()
   Dim nodX As Node   '创建树。
   Set nodX = TreeView1.Nodes.Add(,,"r","Root")
   Set nodX = TreeView1.Nodes.Add(,,"p","Parent")
   Set nodX = TreeView1.Nodes.Add("p",tvwChild,,"Child 1")
   nodX.EnsureVisible   '显示全部节点。
   Set nodX = TreeView1.Nodes.Add("r",tvwChild,"C2","Child 2")
   Set nodX = TreeView1.Nodes.Add("C2",tvwChild,"C3","Child 3")
   Set nodX = TreeView1.Nodes.Add("C3",tvwChild,,"Child 4")
   Set nodX = TreeView1.Nodes.Add("C3",tvwChild,,"Child 5")
   nodX.EnsureVisible   '显示全部节点。
End Sub
 
Private Sub Form_Click()
   Dim intX As Integer
   On Error Resume Next   '如果整数未输入。
   intX = InputBox("Check Node",,TreeView1.SelectedItem.Index)
   If IsNumeric(intX) Then   '确保整数已输入。
      If TreeView1.Nodes(intX).Selected = True Then
         MsgBox TreeView1.Nodes(intX).Text & " is selected."
      Else
         MsgBox "Not selected"
      End If
   End If
End Sub
 
下面例子添加三个 ListItem 对象到 ListView 控件。当单击窗体时,代码用 Selected 属性来确定指定的 ListView 对象是否被选中。为试用此例,在窗体上放置 ListView 控件并粘贴下面的代码到窗体的声明部分。运行此例,选择 ListView,并单击窗体。
 
Private Sub Form_Load()
   Listview1.BorderStyle = vbFixedSingle  '显示边框。
   Dim itmX As ListViewItem
   Set itmX = ListView1.ListItems.Add(,,"Item 1")
   Set itmX = ListView1.ListItems.Add(,,"Item 2")
   Set itmX = ListView1.ListItems.Add(,,"Item 3")
End Sub
 
Private Sub Form_Click()
   Dim intX As Integer
   On Error Resume Next '如果整数未输入。
   intX = InputBox("Check Item", , Listview1.SelectedItem.Index)
   If IsNumeric(intX) Then   '确保整数已输入。
      If ListView1.ListItems(intX).Selected = True Then
         MsgBox ListView1.ListItems(intX).Text & " is selected."
      Else
         MsgBox "Not selected"
      End If
   End If
End Sub
 
16. SelectedImage 属性     
返回或设置在相关的 ImageList 控件中的 ListImage 对象的索引值或键值;当 Node 对象被选中时显示 ListImage。
 
语法
object.SelectedImage [ = index]
SelectedImage 属性语法包含下面部分:
 
部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
index 整数或唯一字符串,标识在相关的 ImageList 控件中的 ListImage 对象。整数是 ListImage 对象的 Index 属性的值;字符串是 Key 属性的值。 
 
说明
如果这个属性置为 Null,则使用由 Image 属性指定的缺省图形的屏蔽。
 
17. Expanded 属性     
这个属性返回或设置一个值,该值确定在 TreeView 控件中的 Node 对象当前是被展开的还是被折叠的。
 
语法
object.Expanded[= boolean]
Expanded 属性的语法包含下面部分:
 
部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
boolean 布尔表达式,其值指定该节点是被展开的还是被折叠的。
 
boolean 的设置值是:
设置值 描述
True 该 Node 当前被展开。
False 该 Node 当前被折叠。
 
说明
Expanded 属性示例
这个例子在 TreeView 控件中添加几个 Node 对象。在单击窗体时,每一个 Node 的 Expanded 属性均被设置为 True。为试用此例,要在窗体上安放 TreeView 控件并在窗体的声明部分粘贴该代码。运行此例,单击该窗体以展开全部 Node 对象。
 
Private Sub Form_Load()
   Dim nodX As Node
   Dim i as Integer
   TreeView1.BorderStyle = vbFixedSingle '显示边框。
 
   '创建一个根节点。
   Set nodX = TreeView1.Nodes.Add(,,"root","Root")
 
   For i = 1 to 5   '添加五个子节点。
      Set nodX = TreeView1.Nodes.Add(i,tvwChild,,"Node " & CStr(i))
   Next i
End Sub
 
Private Sub Form_Click()
   Dim I as Integer
   For I = 1 to TreeView1.Nodes.Count
      '展开全部节点。
      TreeView1.Nodes(i).Expanded = True
   Next I
End Sub
 
18. Bold属性(Windows 通用控件)
返回或设置一个值,确定对象文本是否为粗体。
 
语法
object.Bold [= boolean]
Bold属性语法有如下几部分:
 
部分 描述
object 一个对象表达式,其值是“应用于”列表中的一个对象。
boolean 一个布尔表达式,指定文本是否为粗体,如设置值所描述的。
 
设置值
boolean设置如下:
 
常数 描述
False (缺省)文本不是粗体。
True 文本是粗体。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章