在中 TreeView(樹型結(jié)構(gòu))控件是顯示節(jié)點(diǎn)(Node)對象的級層結(jié)構(gòu) 它通常用于顯示一些有等級結(jié)構(gòu)的信息 我們最為熟悉的就是Windows資源管理器左邊顯示文件和文件夾的窗口 在工具箱中 TreeView 控件的圖標(biāo)如下圖一所示
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),橋西企業(yè)網(wǎng)站建設(shè),橋西品牌網(wǎng)站建設(shè),網(wǎng)站定制,橋西網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,橋西網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
TreeView控件的每個節(jié)點(diǎn)(Node對象)包含了一個標(biāo)簽和可選的點(diǎn)位圖 每個節(jié)點(diǎn)又可能包含有若干個的子節(jié)點(diǎn) 可以通過控制某個節(jié)點(diǎn)來展開顯示或者折疊隱藏它所包含的子節(jié)點(diǎn)
一 TreeView 控件的一些常用屬性
CheckBoxes 屬性 指示是否在樹視圖控件中的樹節(jié)點(diǎn)旁顯示復(fù)選框
FullRowSelect 屬性 當(dāng) FullRowSelect 為 true 時 選擇突出顯示將跨越樹視圖的整個寬度 即整個顯示區(qū)域的寬度而不僅僅是樹節(jié)點(diǎn)標(biāo)簽的寬度 如果 ShowLines 設(shè)置為 true 則將忽略 FullRowSelect 屬性
HideSelection 屬性 指示選定的樹節(jié)點(diǎn)是否即使在樹視圖已失去焦點(diǎn)時仍會保持突出顯示
HotTracking 屬性 如果 HotTracking 屬性設(shè)置為 true 那么當(dāng)鼠標(biāo)指針移過每個樹節(jié)點(diǎn)標(biāo)簽時 樹節(jié)點(diǎn)標(biāo)簽都將具有超級鏈接的外觀 Underline 字體樣式將應(yīng)用于 Font 而 ForeColor 將設(shè)置為藍(lán)色 從而使標(biāo)簽顯示為鏈接 注意 如果 CheckBoxes 屬性設(shè)置為 true HotTracking 屬性將失效
Indent 屬性 設(shè)置每個子樹節(jié)點(diǎn)級別的縮進(jìn)距離(以像素為單位)
ItemHeight 屬性 設(shè)置樹視圖控件中每個樹節(jié)點(diǎn)的高度
Nodes 屬性 獲取分配給樹視圖控件的樹節(jié)點(diǎn)集合 這個屬性是TreeView 控件最重要的屬性之一 我們下文將會對它進(jìn)行更加的詳細(xì)的說明
PathSeparator 屬性 樹節(jié)點(diǎn)路徑(TreeNode FullPath 屬性)所使用的分隔符串 默認(rèn)為反斜杠字符 (\) 樹節(jié)點(diǎn)路徑包括一組由 PathSeparator 分隔符串分隔的樹節(jié)點(diǎn)標(biāo)簽 標(biāo)簽的范圍為根樹節(jié)點(diǎn)到所需的樹節(jié)點(diǎn) 如下代碼我們可以獲得當(dāng)前選中的節(jié)點(diǎn)的路徑
MessageBox Show(TreeView SelectedNode FullPath)
SelectedNode 屬性 獲取或設(shè)置當(dāng)前在樹視圖控件中選定的樹節(jié)點(diǎn) 如果沒有選定任何節(jié)點(diǎn) 則 SelectedNode 屬性則為Nothing
ShowLines 屬性 指示是否在樹視圖控件中的樹節(jié)點(diǎn)之間繪制連線
ShowPlusMinus 屬性 指示是否在包含子樹節(jié)點(diǎn)的樹節(jié)點(diǎn)旁顯示加號 (+) 和減號 ( ) 按鈕
ShowRootLines 屬性 指示是否在樹視圖根處的樹節(jié)點(diǎn)之間繪制連線
如下圖二所示 為ShowLines 屬性 ShowPlusMinus 屬性 ShowRootLines 屬性都設(shè)置為True的情形
二 為TreeView 控件添加節(jié)點(diǎn)
TreeView 控件的 Nodes 屬性包含了它所有的節(jié)點(diǎn) 下面我們就來了解如何為樹狀控件添加節(jié)點(diǎn)
通過樹節(jié)點(diǎn)編輯器添加
選中TreeView 控件 在它的屬性對話框中找到Nodes 屬性 然后單擊它后面的省略號 彈出 樹節(jié)點(diǎn)編輯器 如下圖三所示
然后通過編輯器上的 添加根 來添加根節(jié)點(diǎn) 通過 添加子級 來為選中的節(jié)點(diǎn)添加子節(jié)點(diǎn) 通過 刪除 來刪除選定的節(jié)點(diǎn) 標(biāo)簽 輸入框確定節(jié)點(diǎn)的名稱 注意 只有設(shè)置了TreeView 控件的ImageList 屬性才能選擇設(shè)置節(jié)點(diǎn)的圖像
通過編程方式添加節(jié)點(diǎn)
給TreeView添加結(jié)點(diǎn)用到的是 Nodes Add 方法 首先選定要添加子結(jié)點(diǎn)的結(jié)點(diǎn)才能應(yīng)用這個方法
TreeView中的結(jié)點(diǎn)的組織關(guān)系是父結(jié)點(diǎn)管理子結(jié)點(diǎn)的關(guān)系 也就是說 子結(jié)點(diǎn)組成的集合就是父結(jié)點(diǎn)的 Nodes 屬性 子結(jié)點(diǎn)的 Index 屬性 是根據(jù)其在子結(jié)點(diǎn)集合中的位置而決定的 而不是整棵樹中結(jié)點(diǎn)的位置 根據(jù)這個特點(diǎn) 若想找到指定結(jié)點(diǎn)須按以下的語法
TreeViewName Nodes Item(Index ) Nodes
而添加結(jié)點(diǎn)的方法為
TreeViewName Nodes Item(Index ) Nodes Add( NodeText )或
TreeViewName Nodes Item(Index ) Nodes Add( objNode )
如下代碼所示為選中的節(jié)點(diǎn)添加一個子節(jié)點(diǎn)
TreeView SelectedNode Nodes Add( )
編程刪除節(jié)點(diǎn)
使用Nodes屬性的Remove 方法刪除單個節(jié)點(diǎn) 也可以使用Clear 方法清除所有的節(jié)點(diǎn) 如下代碼所示
刪除選定的節(jié)點(diǎn)
TreeView Nodes Remove(TreeView SelectedNode)
清除TreeView 控件的所有節(jié)點(diǎn)
TreeView Nodes Clear()
示例演示
我們現(xiàn)在用一個實(shí)例來看如何使用Nodes屬性來實(shí)現(xiàn)代碼編程添加刪除樹形控件的節(jié)點(diǎn) 首先為設(shè)計(jì)如下圖四所示的程序界面 其中有四個Button 控件 一個TreeView 控件
為 添加根節(jié)點(diǎn) 按鈕添加如下代碼
TreeView Nodes Add( 根節(jié)點(diǎn) (TreeView GetNodeCount(False) + ))
注意 GetNodeCount方法為獲得本級別的節(jié)點(diǎn)數(shù) 可以通過參數(shù)False來指定不包括它的子節(jié)點(diǎn)
為 添加子節(jié)點(diǎn) 按鈕添加如下代碼
Dim node As TreeNode = TreeView SelectedNode
If Not node Is Nothing Then
node Nodes Add( 子節(jié)點(diǎn) (node GetNodeCount(False) + ))
Else
MessageBox Show( 沒有選中任何節(jié)點(diǎn) )
End If
注意 TreeNode GetNodeCount 方法返回的是分配給 Nodes 集合的子樹節(jié)點(diǎn)的數(shù)目
為 刪除單個節(jié)點(diǎn) 按鈕添加代碼
Dim node As TreeNode = TreeView SelectedNode
If node Is Nothing Then
MessageBox Show( 沒有選中任何節(jié)點(diǎn) )
Else
TreeView Nodes Remove(node)
End If
為 刪除所有節(jié)點(diǎn) 按鈕添加代碼
TreeView Nodes Clear()
代碼添加完畢后 運(yùn)行程序 分別使用 添加根節(jié)點(diǎn) 添加子節(jié)點(diǎn) 為控件添加節(jié)點(diǎn) 如下圖五所示
然后再試驗(yàn)刪除節(jié)點(diǎn)的效果
三 訪問控件的所有節(jié)點(diǎn)
因?yàn)镹odes集合中所包含的只是本級節(jié)點(diǎn)的集合 如果某個Node包含有子節(jié)點(diǎn) 并不會從當(dāng)前的Nodes體現(xiàn)出來 如下代碼所示 我們只能訪問到所有的根節(jié)點(diǎn)而不是所有的節(jié)點(diǎn)
假定我們是在前面示例的基礎(chǔ)上添加一個名為 遍歷節(jié)點(diǎn) 的按鈕 然后在該按鈕的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
運(yùn)行后 先分別為控件添加若干個根節(jié)點(diǎn)與子節(jié)點(diǎn) 然后單擊 遍歷節(jié)點(diǎn) 按鈕 效果如下圖六所示
很明顯 我們遍歷了Nodes集合 但是并沒有如期訪問到子節(jié)點(diǎn) 怎么解決這個問題呢?請看下一頁
如上頁的問題 我們假設(shè)一個根節(jié)點(diǎn)的Nodes集合為Nodes 該集合中的一個Node節(jié)點(diǎn)為Node Node 下有若干個子節(jié)點(diǎn) 我們把它的子節(jié)點(diǎn)的集合稱為Nodes 我們用For Each 遍歷Nodes 時 它訪問到Node 但不會訪問Nodes 集合
如果我們要訪問Nodes 就需要像遍歷Nodes 一樣遍歷Nodes 解決辦法如下
首先 建立一個過程用于遍歷一個Node節(jié)點(diǎn)下的子節(jié)點(diǎn)
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
然后把 遍歷節(jié)點(diǎn) 的Click事件中修改為如下代碼
Dim node As TreeNode
For Each node In TreeView Nodes
PrintNode(node)
Next
node = Nothing
運(yùn)行后 先分別為控件添加若干個根節(jié)點(diǎn)與子節(jié)點(diǎn) 然后單擊 遍歷節(jié)點(diǎn) 按鈕 然后查看 輸出 窗口 效果如下圖七所示
可以發(fā)現(xiàn)已經(jīng)能真正地遍歷了所有節(jié)點(diǎn)
lishixinzhi/Article/program/net/201311/11617
把你的控件 繼承Panel類,而不要集成UserControl類。
你可以在集成Panel后,往Panel里面加一些你自己的方法或Control來實(shí)現(xiàn)你需要的功能。向里面拖控件的功能則由Panel來控制,你自己就不用管了。
添加一個TextBox控件(比如叫TextBox1)。
類似于Lable控件的功能,你可以修改TextBox控件的Text屬性來達(dá)到目的:
不是在設(shè)計(jì)器里修改,而是在代碼中用“TextBox1.Text="你想要顯示的字符串";”這樣的語句,這樣就可以在程序運(yùn)行時改變顯示的內(nèi)容。
設(shè)置或者取消星號,你可以通過代碼修改TextBox1的PasswordChar屬性,跟上面的是類似的:
在其他的控件的事件中比如Button的Click事件中修改——“TextBox1.PasswordChar="";//不顯示***”
“TextBox1.PasswordChar="*(或者任何你想要的字符)";//顯示為***”
至于什么時候改就完全隨你的意思了。
分享文章:vb.net繪制控件 vb控件代碼
URL網(wǎng)址:http://aaarwkj.com/article2/hhheic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、、手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站、標(biāo)簽優(yōu)化、網(wǎng)站建設(shè)
聲明:本網(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)