TreeView,TreeNode,TreeNodeCollection

来源:互联网 发布:MySQL删除重复记录 编辑:程序博客网 时间:2024/04/30 10:00

转自http://hi.baidu.com/625610256/item/44c7bdce3f6bedd197445204

摘自:MSDN

1. TreeView

       TreeView 控件由节点组成。树中的每一项称为一个节点并由TreeNode 对象表示。包含其他节点的节点称为“父节点”。包含在其他节点中的节点称为“子节点”。没有任何子节点的节点称为“叶节点”。不被任何其他节点包含并且是所有其他节点的上级节点的节点称为“根节点”。一个节点可以同时是父节点和子节点,但是不能同时为根节点、父节点和叶节点。节点为根节点、父节点还是叶节点决定着节点的几种可视化属性和行为属性。

典型的树只有一个根节点,但 TreeView 控件允许您向树结构中添加多个根节点。如果希望在显示项列表的同时不显示单个的主根节点(例如显示产品类别列表),那么此功能将十分有用。

       节点主要在两个属性中存储数据:Text 属性和Value 属性。在 TreeView 控件中显示 Text 属性的值,而 Value 属性用于存储有关节点的所有其他数据,如用于处理回发事件的数据。节点还在 ValuePath 属性中存储从该节点到其根节点的路径。ValuePath 属性指示节点相对于根节点的位置。

2. TreeNode

TreeNode 对象由以下四个用户界面 (UI) 元素组成,可以自定义或隐藏这些元素:

  • 展开节点指示图标,以表明节点是展开的、折叠的还是不可展开的。

  • 与节点关联的可选复选框。

  • 可选的节点图像。

  • 节点文本。

        可以通过设置 TreeView 类的 ExpandImageUrl、CollapseImageUrl 和NoExpandImageUrl 属性,指定可展开、可折叠和不可展开的节点的自定义图像。通过将 TreeView 类的 ShowExpandCollapse 属性设置为 false,甚至可以完全隐藏展开节点的指示图标。

        若要在节点旁显示复选框,请设置 TreeView 类的ShowCheckBoxes 属性。如果 ShowCheckBoxes 属性设置为 TreeNodeType.Node 以外的一个值,将在指定的节点类型旁显示复选框。通过设置节点的ShowCheckBox 属性,可以有选择地重写个别节点的复选框。如果显示复选框,可使用 Checked 属性确定复选框是否被选中。

         通过设置 ImageUrl 属性可以在节点中显示图像。此图像显示在节点文本旁。

          TreeView 控件中的节点文本可以处于两种模式之一:选择模式或导航模式。默认情况下,会有一个节点处于选定状态。若要使一个节点处于导航模式,请将该节点的NavigateUrl 属性值设置为空字符串 ("") 以外的值。若要使节点处于选择模式,请将节点的 NavigateUrl 属性设置为空字符串。

        默认情况下,单击处于选择模式的节点会将页面回发到服务器并引发 SelectedNodeChanged 事件。也可以选择设置节点的 SelectAction 属性,指定引发其他事件。有关更多信息,请参见SelectAction。若要确定哪个节点在被单击时处于选择模式,请使用 TreeView 控件的 SelectedNode 属性。

       当节点处于导航模式时,禁用该节点的所有选择事件。单击处于导航模式的节点时,用户将被定向到指定的 URL。可以选择设置Target 属性以指定用来显示链接内容的窗口或框架。

        TreeNode 类包含一些用于存储节点状态的属性。可使用Selected 属性确定节点是否被选定。若要确定节点是否已展开,请使用 Expanded 属性。DataBound 属性用于确定节点是否绑定到数据。当节点绑定到数据时,可以使用DataItem 属性访问基础数据项。

        此类提供了一些属性,有助于确定一个节点相对于树中其他节点的位置。使用 Depth 属性确定节点的深度。使用 ValuePath 属性可以获得从当前节点到其根节点的分隔节点列表。若要确定节点的父节点,请使用Parent 属性。使用 ChildNodes 集合访问子节点。

       有时,静态地预定义树结构并不可行,因为有时数据大小或自定义内容依用户输入而定。因此,TreeView 控件支持动态节点填充。在运行阶段,可以在展开节点时填充该节点。有关动态节点填充的更多信息,请参见PopulateOnDemand 属性。

       有关 TreeNode 的实例的初始属性值列表,请参见TreeNode 构造函数。

3. TreeNodeCollection

        TreeNodeCollection 类用于存储和管理TreeView 控件中的 TreeNode 对象的集合。TreeView 控件在其两个属性中使用TreeNodeCollection 类。在 Nodes 属性中存储其根节点,在 CheckedNodes 属性中存储其选定的节点。TreeNodeCollection 集合也用于 ChildNodes 属性来存储子节点(如果有的话)。

         TreeNodeCollection 类支持多种访问集合中的项的方法:

  • 使用 Item 索引器直接在特定的从零开始的索引处检索 TreeNode 对象。

  • 使用 GetEnumerator 方法创建可用于循环访问集合的枚举数。

  • 使用 foreach (C#) 或 For Each (Visual Basic) 循环访问集合。

  • 使用 CopyTo 方法将集合的内容复制到一个 Array 对象中。

         可以通过添加和移除 TreeNode 对象以编程方式管理TreeNodeCollection。若要在集合中添加节点,请使用 Add 或 AddAt 方法。若要从集合中移除节点,请使用 Remove、RemoveAt 或Clear 方法。

4. Sample

    自动化测试情况下:

    先实例化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

原创粉丝点击