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 文本是粗體。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章