TreeView,TreeNode,TreeNodeCollection 的使用
摘自:MSDN
1. TreeView
?????? TreeView 控件由節(jié)點(diǎn)組成。樹中的每一項(xiàng)稱為一個(gè)節(jié)點(diǎn)并由 TreeNode 對象表示。包含其他節(jié)點(diǎn)的節(jié)點(diǎn)稱為“父節(jié)點(diǎn)”。包含在其他節(jié)點(diǎn)中的節(jié)點(diǎn)稱為“子節(jié)點(diǎn)”。沒有任何子節(jié)點(diǎn)的節(jié)點(diǎn)稱為“葉節(jié)點(diǎn)”。不被任何其他節(jié)點(diǎn)包含并且是所有其他節(jié)點(diǎn)的上級節(jié)點(diǎn)的節(jié)點(diǎn)稱為“根節(jié)點(diǎn)”。一個(gè)節(jié)點(diǎn)可以同時(shí)是父節(jié)點(diǎn)和子節(jié)點(diǎn),但是不能同時(shí)為根節(jié)點(diǎn)、父節(jié)點(diǎn)和葉節(jié)點(diǎn)。節(jié)點(diǎn)為根節(jié)點(diǎn)、父節(jié)點(diǎn)還是葉節(jié)點(diǎn)決定著節(jié)點(diǎn)的幾種可視化屬性和行為屬性。
典型的樹只有一個(gè)根節(jié)點(diǎn),但 TreeView 控件允許您向樹結(jié)構(gòu)中添加多個(gè)根節(jié)點(diǎn)。如果希望在顯示項(xiàng)列表的同時(shí)不顯示單個(gè)的主根節(jié)點(diǎn)(例如顯示產(chǎn)品類別列表),那么此功能將十分有用。
?????? 節(jié)點(diǎn)主要在兩個(gè)屬性中存儲數(shù)據(jù):Text 屬性和 Value 屬性。在 TreeView 控件中顯示 Text 屬性的值,而 Value 屬性用于存儲有關(guān)節(jié)點(diǎn)的所有其他數(shù)據(jù),如用于處理回發(fā)事件的數(shù)據(jù)。節(jié)點(diǎn)還在 ValuePath 屬性中存儲從該節(jié)點(diǎn)到其根節(jié)點(diǎn)的路徑。ValuePath 屬性指示節(jié)點(diǎn)相對于根節(jié)點(diǎn)的位置。
2. TreeNode
TreeNode 對象由以下四個(gè)用戶界面 (UI) 元素組成,可以自定義或隱藏這些元素:
-
展開節(jié)點(diǎn)指示圖標(biāo),以表明節(jié)點(diǎn)是展開的、折疊的還是不可展開的。
-
與節(jié)點(diǎn)關(guān)聯(lián)的可選復(fù)選框。
-
可選的節(jié)點(diǎn)圖像。
-
節(jié)點(diǎn)文本。
??????? 可以通過設(shè)置 TreeView 類的 ExpandImageUrl、CollapseImageUrl 和 NoExpandImageUrl 屬性,指定可展開、可折疊和不可展開的節(jié)點(diǎn)的自定義圖像。通過將 TreeView 類的 ShowExpandCollapse 屬性設(shè)置為 false,甚至可以完全隱藏展開節(jié)點(diǎn)的指示圖標(biāo)。
??????? 若要在節(jié)點(diǎn)旁顯示復(fù)選框,請?jiān)O(shè)置 TreeView 類的 ShowCheckBoxes 屬性。如果 ShowCheckBoxes 屬性設(shè)置為 TreeNodeType.Node 以外的一個(gè)值,將在指定的節(jié)點(diǎn)類型旁顯示復(fù)選框。通過設(shè)置節(jié)點(diǎn)的 ShowCheckBox 屬性,可以有選擇地重寫個(gè)別節(jié)點(diǎn)的復(fù)選框。如果顯示復(fù)選框,可使用 Checked 屬性確定復(fù)選框是否被選中。
???????? 通過設(shè)置 ImageUrl 屬性可以在節(jié)點(diǎn)中顯示圖像。此圖像顯示在節(jié)點(diǎn)文本旁。
????????? TreeView 控件中的節(jié)點(diǎn)文本可以處于兩種模式之一:選擇模式或?qū)Ш侥J健DJ(rèn)情況下,會有一個(gè)節(jié)點(diǎn)處于選定狀態(tài)。若要使一個(gè)節(jié)點(diǎn)處于導(dǎo)航模式,請將該節(jié)點(diǎn)的 NavigateUrl 屬性值設(shè)置為空字符串 ("") 以外的值。若要使節(jié)點(diǎn)處于選擇模式,請將節(jié)點(diǎn)的 NavigateUrl 屬性設(shè)置為空字符串。
??????? 默認(rèn)情況下,單擊處于選擇模式的節(jié)點(diǎn)會將頁面回發(fā)到服務(wù)器并引發(fā) SelectedNodeChanged 事件。也可以選擇設(shè)置節(jié)點(diǎn)的 SelectAction 屬性,指定引發(fā)其他事件。有關(guān)更多信息,請參見 SelectAction。若要確定哪個(gè)節(jié)點(diǎn)在被單擊時(shí)處于選擇模式,請使用 TreeView 控件的 SelectedNode 屬性。
?????? 當(dāng)節(jié)點(diǎn)處于導(dǎo)航模式時(shí),禁用該節(jié)點(diǎn)的所有選擇事件。單擊處于導(dǎo)航模式的節(jié)點(diǎn)時(shí),用戶將被定向到指定的 URL。可以選擇設(shè)置 Target 屬性以指定用來顯示鏈接內(nèi)容的窗口或框架。
??????? TreeNode 類包含一些用于存儲節(jié)點(diǎn)狀態(tài)的屬性。可使用 Selected 屬性確定節(jié)點(diǎn)是否被選定。若要確定節(jié)點(diǎn)是否已展開,請使用 Expanded 屬性。DataBound 屬性用于確定節(jié)點(diǎn)是否綁定到數(shù)據(jù)。當(dāng)節(jié)點(diǎn)綁定到數(shù)據(jù)時(shí),可以使用 DataItem 屬性訪問基礎(chǔ)數(shù)據(jù)項(xiàng)。
??????? 此類提供了一些屬性,有助于確定一個(gè)節(jié)點(diǎn)相對于樹中其他節(jié)點(diǎn)的位置。使用 Depth 屬性確定節(jié)點(diǎn)的深度。使用 ValuePath 屬性可以獲得從當(dāng)前節(jié)點(diǎn)到其根節(jié)點(diǎn)的分隔節(jié)點(diǎn)列表。若要確定節(jié)點(diǎn)的父節(jié)點(diǎn),請使用 Parent 屬性。使用 ChildNodes 集合訪問子節(jié)點(diǎn)。
?????? 有時(shí),靜態(tài)地預(yù)定義樹結(jié)構(gòu)并不可行,因?yàn)橛袝r(shí)數(shù)據(jù)大小或自定義內(nèi)容依用戶輸入而定。因此,TreeView 控件支持動態(tài)節(jié)點(diǎn)填充。在運(yùn)行階段,可以在展開節(jié)點(diǎn)時(shí)填充該節(jié)點(diǎn)。有關(guān)動態(tài)節(jié)點(diǎn)填充的更多信息,請參見 PopulateOnDemand 屬性。
?????? 有關(guān) TreeNode 的實(shí)例的初始屬性值列表,請參見 TreeNode 構(gòu)造函數(shù)。
3. TreeNodeCollection
??????? TreeNodeCollection 類用于存儲和管理 TreeView 控件中的 TreeNode 對象的集合。TreeView 控件在其兩個(gè)屬性中使用 TreeNodeCollection 類。在 Nodes 屬性中存儲其根節(jié)點(diǎn),在 CheckedNodes 屬性中存儲其選定的節(jié)點(diǎn)。TreeNodeCollection 集合也用于 ChildNodes 屬性來存儲子節(jié)點(diǎn)(如果有的話)。
???????? TreeNodeCollection 類支持多種訪問集合中的項(xiàng)的方法:
-
使用 Item 索引器直接在特定的從零開始的索引處檢索 TreeNode 對象。
-
使用 GetEnumerator 方法創(chuàng)建可用于循環(huán)訪問集合的枚舉數(shù)。
-
使用 foreach (C#) 或 For Each (Visual Basic) 循環(huán)訪問集合。
-
使用 CopyTo 方法將集合的內(nèi)容復(fù)制到一個(gè) Array 對象中。
???????? 可以通過添加和移除 TreeNode 對象以編程方式管理 TreeNodeCollection。若要在集合中添加節(jié)點(diǎn),請使用 Add 或 AddAt 方法。若要從集合中移除節(jié)點(diǎn),請使用 Remove、RemoveAt 或 Clear 方法。
4. Sample
??? 自動化測試情況下:
??? 先實(shí)例化treeview,然后
TreeNodeCollection treeNodeCollection = treeView.Nodes;
foreach(TreeNode treeNode in treeNodeCollection)
{
treeNode.select();
if(treeNode.text == "abcd")
{
Console.WriteLine("The node 'abcd' is found.");
具體處理;
break;
}
}
參考:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview_members(VS.80).aspx
總結(jié)
以上是生活随笔為你收集整理的TreeView,TreeNode,TreeNodeCollection 的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顶级投资者的21条箴言(组图)
- 下一篇: 获取treeview中当前鼠标所指的节点