當前位置:編程學習大全網 - 遊戲軟體 - vb.net中TreeView控件的使用

vb.net中TreeView控件的使用

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

 

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

  壹 TreeView 控件的壹些常用屬性

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

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

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

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

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

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

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

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

 MessageBox Show(TreeView SelectedNode FullPath)

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

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

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

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

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

 

  二 為TreeView 控件添加節點

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

  通過樹節點編輯器添加

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

 

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

 

  通過編程方式添加節點

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

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

 TreeViewName Nodes Item(Index ) Nodes

 而添加結點的方法為

 TreeViewName Nodes Item(Index ) Nodes Add( NodeText )或

 TreeViewName Nodes Item(Index ) Nodes Add( objNode )

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

 TreeView SelectedNode Nodes Add( )

  編程刪除節點

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

  刪除選定的節點

 TreeView Nodes Remove(TreeView SelectedNode)

  清除TreeView 控件的所有節點

 TreeView Nodes Clear()

  示例演示

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

 

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

 TreeView Nodes Add( 根節點 & (TreeView GetNodeCount(False) + ))

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

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

 Dim node As TreeNode = TreeView SelectedNode

 If Not node Is Nothing Then

 node Nodes Add( 子節點 & (node GetNodeCount(False) + ))

 Else

 MessageBox Show( 沒有選中任何節點 )

 End If

 註意 TreeNode GetNodeCount 方法返回的是分配給 Nodes 集合的子樹節點的數目

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

 Dim node As TreeNode = TreeView SelectedNode

 If node Is Nothing Then

 MessageBox Show( 沒有選中任何節點 )

 Else

 TreeView Nodes Remove(node)

 End If

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

 TreeView Nodes Clear()

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

 

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

  三 訪問控件的所有節點

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

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

 Dim node As TreeNode

 Dim str As String =

 For Each node In TreeView Nodes

 str = str & node Text & vbCr

 Next

 MessageBox Show(str)

 node = Nothing

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

 

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

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

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

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

 Private Sub PrintNode(ByVal N As TreeNode)

 Debug WriteLine(N Text)

 Dim node As TreeNode

 For Each node In N Nodes

 PrintNode(node)

 Next

 End Sub

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

 Dim node As TreeNode

 For Each node In TreeView Nodes

 PrintNode(node)

 Next

 node = Nothing

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

 

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

lishixinzhi/Article/program/net/201311/11617

  • 上一篇:開盤價什麽意思
  • 下一篇:屋塔房王世子結局
  • copyright 2024編程學習大全網