熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

vb.net中TreeView控件的使用

2022-06-13   來源: .NET編程 

  在中TreeView(樹型結構)控件是顯示節點(Node)對象的級層結構它通常用於顯示一些有等級結構的信息我們最為熟悉的就是Windows資源管理器左邊顯示文件和文件夾的窗口在工具箱中TreeView 控件的圖標如下圖一所示

  入門——TreeView 控件的使用(圖一)

  TreeView控件的每個節點(Node對象)包含了一個標簽和可選的點位圖每個節點又可能包含有若干個的子節點可以通過控制某個節點來展開顯示或者折疊隱藏它所包含的子節點

  TreeView 控件的一些常用屬性

  CheckBoxes 屬性指示是否在樹視圖控件中的樹節點旁顯示復選框

  FullRowSelect 屬性當 FullRowSelect 為 true 時選擇突出顯示將跨越樹視圖的整個寬度即整個顯示區域的寬度而不僅僅是樹節點標簽的寬度如果 ShowLines 設置為 true則將忽略 FullRowSelect 屬性

  HideSelection 屬性指示選定的樹節點是否即使在樹視圖已失去焦點時仍會保持突出顯示

  HotTracking 屬性如果 HotTracking 屬性設置為 true那麼當鼠標指針移過每個樹節點標簽時樹節點標簽都將具有超級鏈接的外觀Underline 字體樣式將應用於 Font 而 ForeColor 將設置為藍色從而使標簽顯示為鏈接注意如果 CheckBoxes 屬性設置為 trueHotTracking 屬性將失效

  Indent 屬性設置每個子樹節點級別的縮進距離(以像素為單位)

  ItemHeight 屬性設置樹視圖控件中每個樹節點的高度

  Nodes 屬性獲取分配給樹視圖控件的樹節點集合這個屬性是TreeView 控件最重要的屬性之一我們下文將會對它進行更加的詳細的說明

  PathSeparator 屬性樹節點路徑(TreeNodeFullPath 屬性)所使用的分隔符串默認為反斜槓字符 (\)樹節點路徑包括一組由 PathSeparator 分隔符串分隔的樹節點標簽標簽的范圍為根樹節點到所需的樹節點如下代碼我們可以獲得當前選中的節點的路徑

  MessageBoxShow(TreeViewSelectedNodeFullPath)

  SelectedNode 屬性獲取或設置當前在樹視圖控件中選定的樹節點如果沒有選定任何節點則 SelectedNode 屬性則為Nothing

  ShowLines 屬性指示是否在樹視圖控件中的樹節點之間繪制連線

  ShowPlusMinus 屬性指示是否在包含子樹節點的樹節點旁顯示加號 (+) 和減號 () 按鈕

  ShowRootLines 屬性指示是否在樹視圖根處的樹節點之間繪制連線

  如下圖二所示為ShowLines 屬性ShowPlusMinus 屬性ShowRootLines 屬性都設置為True的情形

  入門——TreeView 控件的使用(圖二)

  為TreeView 控件添加節點

  TreeView 控件的 Nodes 屬性包含了它所有的節點下面我們就來了解如何為樹狀控件添加節點

  通過樹節點編輯器添加

  選中TreeView 控件在它的屬性對話框中找到Nodes 屬性然後單擊它後面的省略號彈出樹節點編輯器如下圖三所示

  入門——TreeView 控件的使用(圖三)

  然後通過編輯器上的添加根來添加根節點通過添加子級來為選中的節點添加子節點通過刪除來刪除選定的節點標簽輸入框確定節點的名稱注意只有設置了TreeView 控件的ImageList 屬性才能選擇設置節點的圖像

  

  通過編程方式添加節點

  給TreeView添加結點用到的是NodesAdd方法首先選定要添加子結點的結點才能應用這個方法

  TreeView中的結點的組織關系是父結點管理子結點的關系也就是說子結點組成的集合就是父結點的Nodes屬性子結點的Index屬性是根據其在子結點集合中的位置而決定的而不是整棵樹中結點的位置根據這個特點若想找到指定結點須按以下的語法

  TreeViewNameNodesItem(Index)Nodes

  而添加結點的方法為

  TreeViewNameNodesItem(Index)NodesAdd(NodeText)

  TreeViewNameNodesItem(Index)NodesAdd(objNode)

  如下代碼所示為選中的節點添加一個子節點

  TreeViewSelectedNodeNodesAdd(www)

  編程刪除節點

  使用Nodes屬性的Remove 方法刪除單個節點也可以使用Clear 方法清除所有的節點如下代碼所示

  刪除選定的節點

  TreeViewNodesRemove(TreeViewSelectedNode)

  清除TreeView 控件的所有節點

  TreeViewNodesClear()

  示例演示

  我們現在用一個實例來看如何使用Nodes屬性來實現代碼編程添加刪除樹形控件的節點首先為設計如下圖四所示的程序界面其中有四個Button 控件一個TreeView 控件

  入門——TreeView 控件的使用(圖四)

  為添加根節點按鈕添加如下代碼

  TreeViewNodesAdd(根節點 & (TreeViewGetNodeCount(False) + ))

  注意GetNodeCount方法為獲得本級別的節點數可以通過參數False來指定不包括它的子節點

  為添加子節點按鈕添加如下代碼

  Dim node As TreeNode = TreeViewSelectedNode

  If Not node Is Nothing Then

  nodeNodesAdd(子節點 & (nodeGetNodeCount(False) + ))

  Else

  MessageBoxShow(沒有選中任何節點)

  End If

  注意TreeNodeGetNodeCount 方法返回的是分配給 Nodes 集合的子樹節點的數目

  為刪除單個節點按鈕添加代碼

  Dim node As TreeNode = TreeViewSelectedNode

  If node Is Nothing Then

  MessageBoxShow(沒有選中任何節點)

  Else

  TreeViewNodesRemove(node)

  End If

  為刪除所有節點按鈕添加代碼

  TreeViewNodesClear()

  代碼添加完畢後運行程序分別使用添加根節點添加子節點為控件添加節點如下圖五所示

  入門——TreeView 控件的使用(圖五)

  然後再試驗刪除節點的效果

  訪問控件的所有節點

  因為Nodes集合中所包含的只是本級節點的集合如果某個Node包含有子節點並不會從當前的Nodes體現出來如下代碼所示我們只能訪問到所有的根節點而不是所有的節點

  假定我們是在前面示例的基礎上添加一個名為遍歷節點的按鈕然後在該按鈕的Click事件中添加如下代碼

  Dim node As TreeNode

  Dim str As String =

  For Each node In TreeViewNodes

  str = str & nodeText & vbCr

  Next

  MessageBoxShow(str)

  node = Nothing

  運行後先分別為控件添加若干個根節點與子節點然後單擊遍歷節點按鈕效果如下圖六所示

  入門——TreeView 控件的使用(圖六)

  很明顯我們遍歷了Nodes集合但是並沒有如期訪問到子節點怎麼解決這個問題呢?請看下一頁

  如上頁的問題我們假設一個根節點的Nodes集合為Nodes該集合中的一個Node節點為NodeNode下有若干個子節點我們把它的子節點的集合稱為Nodes我們用For Each 遍歷Nodes它訪問到Node但不會訪問Nodes集合

  如果我們要訪問Nodes就需要像遍歷Nodes一樣遍歷Nodes解決辦法如下

  首先建立一個過程用於遍歷一個Node節點下的子節點

  Private Sub PrintNode(ByVal N As TreeNode)

  DebugWriteLine(NText)

  Dim node As TreeNode

  For Each node In NNodes

  PrintNode(node)

  Next

  End Sub

  然後把遍歷節點的Click事件中修改為如下代碼

  Dim node As TreeNode

  For Each node In TreeViewNodes

  PrintNode(node)

  Next

  node = Nothing

  運行後先分別為控件添加若干個根節點與子節點然後單擊遍歷節點按鈕然後查看輸出窗口效果如下圖七所示

  入門——TreeView 控件的使用(圖七)

  可以發現已經能真正地遍歷了所有節點

  本文主要是了解TreeView 控件的一些主要屬性著重於掌握Nodes屬性的性質和使用請你繼續關注我們巧巧讀書網的相關文章連載我們一起去探索編程世界


From:http://tw.wingwit.com/Article/program/net/201311/11617.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.