vb.net操作樹形數(shù)據(jù) vbnet數(shù)組操作

VB.net怎么制作樹形菜單???

你說的“樹形菜單”是指下拉菜單(可以有子菜單)嗎?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在對(duì)應(yīng)位置打字就可以了,完全是“所見即所得”。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供靈山企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為靈山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

VB.NET中treeview的使用

Nodes 集合包含分配給 TreeView 控件的所有 TreeNode 對(duì)象。此集合中的樹節(jié)點(diǎn)稱作根樹節(jié)點(diǎn)。隨后添加到根樹節(jié)點(diǎn)上的任何樹節(jié)點(diǎn)稱作子節(jié)點(diǎn)。由于每個(gè) TreeNode 都可以包含其他 TreeNode 對(duì)象的集合,您可能會(huì)在循環(huán)訪問集合時(shí)覺得很難確定自己在樹結(jié)構(gòu)中的位置。您可以使用 PathSeparator 字符串值來分析 TreeNode.FullPath 字符串,以確定 TreeNode 標(biāo)簽的起始和終止位置。

可以在樹節(jié)點(diǎn)旁顯示圖像,方法是將一個(gè) ImageList 分配給 ImageList 屬性,然后通過引用 Image 在 ImageList 中的索引值來分配該 Image。使用下面的屬性分配圖像:

將 ImageIndex 屬性設(shè)置為當(dāng)樹節(jié)點(diǎn)未選定時(shí)所顯示的 Image 的索引值。

將 SelectedImageIndex 屬性設(shè)置為當(dāng)樹節(jié)點(diǎn)被選定時(shí)要顯示的 Image 的索引值。

ImageIndex 和 SelectedImageIndex 屬性值所引用的圖像是所有分配給 Nodes 集合的樹節(jié)點(diǎn)顯示的默認(rèn)圖像。每個(gè)樹節(jié)點(diǎn)都可以通過設(shè)置 TreeNode.ImageIndex 和 TreeNode.SelectedImageIndex 屬性來取代默認(rèn)的圖像。

樹節(jié)點(diǎn)可以展開,以顯示下一級(jí)子樹節(jié)點(diǎn)。用戶可以在 TreeNode 旁顯示加號(hào) (+) 按鈕時(shí)通過單擊加號(hào) (+) 按鈕來展開 TreeNode,或者可以通過調(diào)用 TreeNode.Expand 方法來展開 TreeNode。若要展開 Nodes 集合中的所有子樹節(jié)點(diǎn)級(jí)別,請(qǐng)調(diào)用 ExpandAll 方法。若要折疊子 TreeNode 級(jí)別,可以調(diào)用 TreeNode.Collapse 方法,也可以在 TreeNode 旁顯示減號(hào) (-) 按鈕時(shí)按減號(hào) (-) 按鈕。還可以通過調(diào)用 TreeNode.Toggle 方法在展開和折疊狀態(tài)之間切換。

樹節(jié)點(diǎn)可以選擇性地顯示復(fù)選框。若要顯示復(fù)選框,請(qǐng)將 TreeView 的 CheckBoxes 屬性設(shè)置為 true。對(duì)于處于選中狀態(tài)的樹節(jié)點(diǎn),Checked 屬性設(shè)置為 true。

注意

從 BeforeCheck 或 AfterCheck 事件內(nèi)設(shè)置 TreeNode.Checked 屬性將導(dǎo)致該事件被多次引發(fā)并可能產(chǎn)生意外行為。例如,您可以在遞歸更新子節(jié)點(diǎn)時(shí)在事件處理程序中設(shè)置 Checked 屬性,以便用戶不必逐個(gè)展開并選中每個(gè)節(jié)點(diǎn)。如果未將 TreeViewEventArgs 的 Action 屬性設(shè)置為 TreeViewAction.Unknown,則若要防止該事件被多次引發(fā),需為僅執(zhí)行遞歸代碼的事件處理程序添加邏輯。有關(guān)如何進(jìn)行此操作的示例,請(qǐng)參見 AfterCheck 或 BeforeCheck 事件的示例部分。

通過設(shè)置 TreeView 控件的一些顯示和樣式屬性,可以更改此控件的外觀。如果將 ShowPlusMinus 設(shè)置為 true,則會(huì)分別在每個(gè)可展開或折疊的 TreeNode 旁顯示加號(hào)或減號(hào)按鈕。如果將 ShowRootLines 屬性設(shè)置為 true,TreeView 則會(huì)顯示聯(lián)接所有根樹節(jié)點(diǎn)之間的連線。通過將 ShowLines 屬性設(shè)置為 true,可以顯示子樹節(jié)點(diǎn)與其根節(jié)點(diǎn)之間的連線。如果將 HotTracking 屬性設(shè)置為 true,那么當(dāng)鼠標(biāo)指針移過樹節(jié)點(diǎn)標(biāo)簽時(shí),樹節(jié)點(diǎn)標(biāo)簽的外觀將發(fā)生變化。如果啟用熱跟蹤,樹節(jié)點(diǎn)標(biāo)簽將具有超鏈接的外觀。也可以完全自定義 TreeView 控件的外觀。若要執(zhí)行此操作,請(qǐng)將 DrawMode 屬性設(shè)置為 TreeViewDrawMode.Normal 以外的值并處理 DrawNode 事件。

注意

在運(yùn)行時(shí)設(shè)置 CheckBoxes、Scrollable、ImageIndex 和 SelectedImageIndex 屬性時(shí),將重新創(chuàng)建 TreeView 句柄(請(qǐng)參見 Control.RecreateHandle)以更新控件的外觀。這將折疊除選定的 TreeNode 之外的所有樹節(jié)點(diǎn)。

下面的代碼示例闡釋了如何使用 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 treeview 幾個(gè)問題

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

并沒有要求培養(yǎng)字段,查詢時(shí)從len(ID)=3*N,每次循環(huán)時(shí)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é)果排個(gè)升序就不會(huì)存在這樣的問題了,你剛才說的那種,如果中間沒有比001001001001001更短的關(guān)鍵字,那么就脫節(jié),這種是不可能添加到treeview中.

遞歸一般用在不知道節(jié)數(shù),沒有關(guān)鍵字的情況,比如系統(tǒng)目錄結(jié)構(gòu).

原文:

VB.net如何動(dòng)態(tài)獲取菜單欄中的菜單名并用樹型表示

添加:(先在加一個(gè)contextMenu,再它的添加子菜單的click事件編程)

Try

’使TreeView可以被編輯

TreeView1.LabelEdit = True

‘判斷你是不是選定的是不可編輯的節(jié)點(diǎn),我這里工種節(jié)點(diǎn)不可以被編輯,只有工種下級(jí)的

各個(gè)工種名稱可以被編輯

If Trim(TreeView1.SelectedNode.Text) = "工種" Then

‘添加節(jié)點(diǎn)

AddNode = New TreeNode("請(qǐng)輸入新工種名字")

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ù)庫(kù))得來,那么你還需要更新數(shù)據(jù)庫(kù)

編輯:

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

‘此時(shí)你改完了節(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 一個(gè)是改前的名字一個(gè)是該后的名字,具體哪個(gè)對(duì)

哪個(gè)請(qǐng)查MSDN

ElseIf Trim(e.Node.Text) "工種" And e.Node.Text e.Label.ToString Then

If MsgBox("此操作會(huì)導(dǎo)致當(dāng)前工種中的所有人員的工種都被更改,是否確定?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "警告") = MsgBoxResult.Yes Then

。。。。 ‘我的更改

MsgBox("更改成功!", MsgBoxStyle.OKOnly, "提示")

'Call InitTree() ‘有時(shí)要重新把treeview初始化一遍,視需求定

End If

End If

Catch err As Exception

MsgBox(err.ToString)

End Try

End Sub

其他:

擋treeview得到焦點(diǎn)時(shí)你可以使用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菜單添加“更改”項(xiàng),而是直接更改:即左鍵單擊節(jié)點(diǎn)表示

選中,再單擊一下就可以編輯了,更改之后單擊他處就完成更改,和你在windows中更改文

件名字相似。

標(biāo)題名稱:vb.net操作樹形數(shù)據(jù) vbnet數(shù)組操作
轉(zhuǎn)載來于:http://muchs.cn/article30/dospgpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站網(wǎng)站策劃、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司