這種不要用遞歸,知道關鍵字長度,知道節數用判斷就可以了,取前3位第一節,第二節取3個為父節點,取全部為第二節關鍵字,第三節取前6個為父節點,取全部為第三節關鍵字.
成都創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的南和網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
并沒有要求培養字段,查詢時從len(ID)=3*N,每次循環時N都+1
select * from tablename where len(id)=3
select case N
case 1
treeview.node.add id,name
case 2
treeview.node(left(id,3)).node.add id,name
case 3
treeview.node(left(id,3)).node(left(id,6)).add id,name
end select
查詢結果排個升序就不會存在這樣的問題了,你剛才說的那種,如果中間沒有比001001001001001更短的關鍵字,那么就脫節,這種是不可能添加到treeview中.
遞歸一般用在不知道節數,沒有關鍵字的情況,比如系統目錄結構.
原文:
樹狀結構使用treeview實現,控件添加方法:右擊“工具箱”-“部件”-microsoft windows common controls 6.0-確定,應用
下面是簡單的添加刪除方法,
Option Explicit
‘添加項目
Private Sub Command1_Click()
Dim nodx As Node
Set nodx = TreeView1.Nodes.Add(, , "zf", "紫風無痕關系(雙擊收起)")
Set nodx = TreeView1.Nodes.Add("zf", tvwChild, "zfwife", "老婆")
Set nodx = TreeView1.Nodes.Add("zf", tvwChild, "zflover", "情人")
Set nodx = TreeView1.Nodes.Add("zf", tvwChild, "zffriend", "朋友")
Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp1", "大老婆")
Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp2", "二老婆")
Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp3", "三老婆")
Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp4", "四老婆")
Set nodx = TreeView1.Nodes.Add("zfwife", tvwChild, "lp5", "五老婆")
Set nodx = TreeView1.Nodes.Add("zflover", tvwChild, "qr1", "1號情人")
Set nodx = TreeView1.Nodes.Add("zflover", tvwChild, "qr2", "2號情人")
Set nodx = TreeView1.Nodes.Add("zflover", tvwChild, "qr3", "3號情人")
Set nodx = TreeView1.Nodes.Add("zffriend", tvwChild, "py1", "張三")
Set nodx = TreeView1.Nodes.Add("zffriend", tvwChild, "py2", "李四")
Set nodx = TreeView1.Nodes.Add("zffriend", tvwChild, "py3", "王麻子")
Set nodx = TreeView1.Nodes.Add("py1", tvwChild, "pylp1", "張三的老婆")
Set nodx = TreeView1.Nodes.Add("py1", tvwChild, "pylp2", "張三的孩子")
nodx.EnsureVisible
End Sub
'刪除代碼
Private Sub Command2_Click()
MsgBox ("將要刪除" TreeView1.SelectedItem.Text)
TreeView1.Nodes.Remove (TreeView1.SelectedItem.Index)
End Sub
你說的“樹形菜單”是指下拉菜單(可以有子菜單)嗎?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在對應位置打字就可以了,完全是“所見即所得”。
給你一段我曾經寫的代碼,主要是生成TreeView的節點!有什么不懂的地方你就提!
Public Sub InitializeTreeView(ByVal strvXL As TreeView, ByVal vrsRecordTwo As DataSet)
Dim treBaseNodeOne As TreeNode
Dim treBaseNodeTwo As TreeNode
Dim strDWDM As String
m_rsRecordTwo = g_clsSybase.SelectSC_PD_SBCSB1()
'查找供電局信息
g_clsSybase.SelectRS_ZZJG_ZZJGDMB(m_rsRecordOne)
'添加根節點
Do While m_rsRecordOne.Read
strDWDM = m_rsRecordOne.GetString(0) '獲取單位代碼
treBaseNodeOne = New TreeNode
treBaseNodeOne.Text = m_rsRecordOne.GetString(1).Trim() '獲取單位名稱
treBaseNodeOne.Name = m_rsRecordOne.GetString(1)
treBaseNodeOne.Tag = ""
strvXL.Nodes.Add(treBaseNodeOne)
'添加樹結構第二層
Dim drsTwo() As DataRow
drsTwo = m_rsRecordTwo.Tables(0).Select("SSDW='" strDWDM "' and SC__XLBM is null")
For Each dr As DataRow In drsTwo
treBaseNodeTwo = New TreeNode
treBaseNodeTwo.Text = dr.Item("XLMC").ToString.Trim
treBaseNodeTwo.Name = dr.Item("XLMC")
treBaseNodeTwo.Tag = dr.Item("XLBM")
treBaseNodeOne.Nodes.Add(treBaseNodeTwo)
Next
Loop
m_rsRecordOne.Close()
End Sub
Nodes 集合包含分配給 TreeView 控件的所有 TreeNode 對象。此集合中的樹節點稱作根樹節點。隨后添加到根樹節點上的任何樹節點稱作子節點。由于每個 TreeNode 都可以包含其他 TreeNode 對象的集合,您可能會在循環訪問集合時覺得很難確定自己在樹結構中的位置。您可以使用 PathSeparator 字符串值來分析 TreeNode.FullPath 字符串,以確定 TreeNode 標簽的起始和終止位置。
可以在樹節點旁顯示圖像,方法是將一個 ImageList 分配給 ImageList 屬性,然后通過引用 Image 在 ImageList 中的索引值來分配該 Image。使用下面的屬性分配圖像:
將 ImageIndex 屬性設置為當樹節點未選定時所顯示的 Image 的索引值。
將 SelectedImageIndex 屬性設置為當樹節點被選定時要顯示的 Image 的索引值。
ImageIndex 和 SelectedImageIndex 屬性值所引用的圖像是所有分配給 Nodes 集合的樹節點顯示的默認圖像。每個樹節點都可以通過設置 TreeNode.ImageIndex 和 TreeNode.SelectedImageIndex 屬性來取代默認的圖像。
樹節點可以展開,以顯示下一級子樹節點。用戶可以在 TreeNode 旁顯示加號 (+) 按鈕時通過單擊加號 (+) 按鈕來展開 TreeNode,或者可以通過調用 TreeNode.Expand 方法來展開 TreeNode。若要展開 Nodes 集合中的所有子樹節點級別,請調用 ExpandAll 方法。若要折疊子 TreeNode 級別,可以調用 TreeNode.Collapse 方法,也可以在 TreeNode 旁顯示減號 (-) 按鈕時按減號 (-) 按鈕。還可以通過調用 TreeNode.Toggle 方法在展開和折疊狀態之間切換。
樹節點可以選擇性地顯示復選框。若要顯示復選框,請將 TreeView 的 CheckBoxes 屬性設置為 true。對于處于選中狀態的樹節點,Checked 屬性設置為 true。
注意
從 BeforeCheck 或 AfterCheck 事件內設置 TreeNode.Checked 屬性將導致該事件被多次引發并可能產生意外行為。例如,您可以在遞歸更新子節點時在事件處理程序中設置 Checked 屬性,以便用戶不必逐個展開并選中每個節點。如果未將 TreeViewEventArgs 的 Action 屬性設置為 TreeViewAction.Unknown,則若要防止該事件被多次引發,需為僅執行遞歸代碼的事件處理程序添加邏輯。有關如何進行此操作的示例,請參見 AfterCheck 或 BeforeCheck 事件的示例部分。
通過設置 TreeView 控件的一些顯示和樣式屬性,可以更改此控件的外觀。如果將 ShowPlusMinus 設置為 true,則會分別在每個可展開或折疊的 TreeNode 旁顯示加號或減號按鈕。如果將 ShowRootLines 屬性設置為 true,TreeView 則會顯示聯接所有根樹節點之間的連線。通過將 ShowLines 屬性設置為 true,可以顯示子樹節點與其根節點之間的連線。如果將 HotTracking 屬性設置為 true,那么當鼠標指針移過樹節點標簽時,樹節點標簽的外觀將發生變化。如果啟用熱跟蹤,樹節點標簽將具有超鏈接的外觀。也可以完全自定義 TreeView 控件的外觀。若要執行此操作,請將 DrawMode 屬性設置為 TreeViewDrawMode.Normal 以外的值并處理 DrawNode 事件。
注意
在運行時設置 CheckBoxes、Scrollable、ImageIndex 和 SelectedImageIndex 屬性時,將重新創建 TreeView 句柄(請參見 Control.RecreateHandle)以更新控件的外觀。這將折疊除選定的 TreeNode 之外的所有樹節點。
下面的代碼示例闡釋了如何使用 TreeView 控件。
Private Sub InitializeTreeView()
treeView1.BeginUpdate()
treeView1.Nodes.Add("Parent")
treeView1.Nodes(0).Nodes.Add("Child 1")
treeView1.Nodes(0).Nodes.Add("Child 2")
treeView1.Nodes(0).Nodes(1).Nodes.Add("Grandchild")
treeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Great Grandchild")
treeView1.EndUpdate()
End Sub
From MSDN
網站欄目:vb.net樹結構,c#樹結構
分享地址:http://vcdvsql.cn/article22/hegpcc.html
成都網站建設公司_創新互聯,為您提供標簽優化、Google、網站設計、定制開發、網頁設計公司、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯