這種不要用遞歸,知道關(guān)鍵字長度,知道節(jié)數(shù)用判斷就可以了,取前3位第一節(jié),第二節(jié)取3個為父節(jié)點(diǎn),取全部為第二節(jié)關(guān)鍵字,第三節(jié)取前6個為父節(jié)點(diǎn),取全部為第三節(jié)關(guān)鍵字.

創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、網(wǎng)站設(shè)計與策劃設(shè)計,黃驊網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:黃驊等地區(qū)。黃驊做網(wǎng)站價格咨詢:13518219792
并沒有要求培養(yǎng)字段,查詢時從len(ID)=3*N,每次循環(huá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
查詢結(jié)果排個升序就不會存在這樣的問題了,你剛才說的那種,如果中間沒有比001001001001001更短的關(guān)鍵字,那么就脫節(jié),這種是不可能添加到treeview中.
遞歸一般用在不知道節(jié)數(shù),沒有關(guān)鍵字的情況,比如系統(tǒng)目錄結(jié)構(gòu).
原文:
使用 treeview的 AfterSelect 事件,如:
vb.net代碼:
Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.AfterSelect
'執(zhí)行相應(yīng)的功能。
End Sub
BOOL WINAPI EnumChildWindows
(v=vs.85).aspx
找對方主窗口中的子窗口,直到子窗口類為TreeView
然后再用個CWnd* pOtherTreeWnd = CWnd::Accach(treeView.m_hWnd);
你說的“樹形菜單”是指下拉菜單(可以有子菜單)嗎?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在對應(yīng)位置打字就可以了,完全是“所見即所得”。
''' summary
''' 加入菜單子節(jié)點(diǎn)
''' /summary
''' param name="tbMenu"菜單表/param
''' param name="tvNode"父節(jié)點(diǎn)/param
''' remarks/remarks
Private Sub AddNode(ByVal tbMenu As DataTable, ByVal tvNode As TreeNode)
Dim myRow As DataRow() = tbMenu.Select(String.Format("PRMENUID = '{0}'", tvNode.NodeID), "SORTORDER")‘查詢子菜單,按SORTORDER字段排序
Dim strURL As String = String.Empty‘菜單鏈接
For Each DataRow In myRow’循環(huán)所有子菜單
Dim MainMenuNode As TreeNode = New TreeNode() With {.Text = DataRow.Item("VALUE"), .NodeID = DataRow.Item("MENU_ID")}'實(shí)例化一個子節(jié)點(diǎn)
If DataRow.Item("URL").ToString.Length 0 Then
strURL = String.Format("{0}?menuid={1}", DataRow.Item("URL"), DataRow.Item("MENUID"))’菜單鏈接
MainMenuNode.NavigateUrl = strURL
MainMenuNode.IconUrl = "../image/leaf.gif"‘菜單圖標(biāo)
End If
MainMenuNode.SingleClickExpand = True’設(shè)置單擊菜單時展開子菜單
MainMenuNode.Expanded = True‘默認(rèn)展開所有菜單
tvNode.Nodes.Add(MainMenuNode)’將子節(jié)點(diǎn)添加進(jìn)父節(jié)點(diǎn)
AddNode(tbMenu, MainMenuNode) '利用遞歸生成樹形菜單
Next
End Sub
希望對你有幫助。
添加:(先在加一個contextMenu,再它的添加子菜單的click事件編程)
Try
’使TreeView可以被編輯
TreeView1.LabelEdit = True
‘判斷你是不是選定的是不可編輯的節(jié)點(diǎn),我這里工種節(jié)點(diǎn)不可以被編輯,只有工種下級的
各個工種名稱可以被編輯
If Trim(TreeView1.SelectedNode.Text) = "工種" Then
‘添加節(jié)點(diǎn)
AddNode = New TreeNode("請輸入新工種名字")
TreeView1.SelectedNode.Nodes.Add(AddNode)
TreeView1.ExpandAll()
AddNode.BeginEdit()
TreeView1.LabelEdit = True
NodeAdded = True
End If
Catch err As Exception
MsgBox(err.ToString)
End Try
刪除與添加類似,只是如果你的節(jié)點(diǎn)名字從其他處(如數(shù)據(jù)庫)得來,那么你還需要更新數(shù)據(jù)庫
編輯:
Private Sub TreeView1_BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.BeforeLabelEdit
TreeView1.LabelEdit = True ‘使可以編輯
AddNode = TreeView1.SelectedNode
End Sub
Private Sub TreeView1_AfterLabelEdit(ByVal sender As Object, ByVal e As System.windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.AfterLabelEdit
Try
‘此時你改完了節(jié)點(diǎn)名字
TreeView1.SelectedNode.EndEdit(True)
If e.Label Is Nothing Then
'do nothing
ElseIf e.Node.Text = "工種" Then ‘工種不能改
e.CancelEdit() = True
‘e.Node.Text ,e.Label.ToString 一個是改前的名字一個是該后的名字,具體哪個對
哪個請查MSDN
ElseIf Trim(e.Node.Text) "工種" And e.Node.Text e.Label.ToString Then
If MsgBox("此操作會導(dǎo)致當(dāng)前工種中的所有人員的工種都被更改,是否確定?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "警告") = MsgBoxResult.Yes Then
。。。。 ‘我的更改
MsgBox("更改成功!", MsgBoxStyle.OKOnly, "提示")
'Call InitTree() ‘有時要重新把treeview初始化一遍,視需求定
End If
End If
Catch err As Exception
MsgBox(err.ToString)
End Try
End Sub
其他:
擋treeview得到焦點(diǎn)時你可以使用ContextMenu,反之ContextMenu禁用
Private Sub TreeView1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.GotFocus
TreeView1.ContextMenu = ContextMenu1
End Sub
Private Sub TreeView1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.LostFocus
TreeView1.ContextMenu = Nothing
End Sub
注意:這里沒有在ContextMenu菜單添加“更改”項,而是直接更改:即左鍵單擊節(jié)點(diǎn)表示
選中,再單擊一下就可以編輯了,更改之后單擊他處就完成更改,和你在windows中更改文
件名字相似。
網(wǎng)頁標(biāo)題:vb.net+樹形,vb樹形控件
鏈接地址:http://chinadenli.net/article35/dsggepi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、外貿(mào)建站、網(wǎng)站排名、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)