Windows Form TreeView 上逐层加载数据

      TreeView 是一个很好的表达树形结构的控件。如果要加载的数据比较多的话,就需要逐层加载数据。要实现逐层加载数据,首先想到的就是TreeView 的 BeforeExpand 事件,它在节点展开前触发。但问题是BeforeExpand 事件每次展开时都会触发。有没有只在首次展开才触发的事件呢,可惜没找到。没关系,我们自定义一个 TreeView 节点类,给它加一个是否首次被展开的属性。
    /// <summary>
    
/// 自定义节点类,继承于系统的 TreeNode 类
    
///   自定义节点类的目的就是给节点增加一个 IsFirstExpand 属性
    
/// </summary>
    public class DirNode : TreeNode
    {
        
// 该节点是否首次被展开
        private bool isFirstExpand = true;

        
public DirNode() : base()
        {}

        
public DirNode(string text) : base(text)
        {}

        
/// <summary>
        
/// 该节点是否首次被展开
        
/// 因为 TreeNode 没有该属性,那我们自己定义吧!
        
/// </summary>
        public bool IsFirstExpand
        {
            
get { return isFirstExpand; }
            
set { isFirstExpand = value; }
        }
    }

自定义 TreeView 节点类有了“是否首次被展开”的属性之后,逐层展开 TreeView  节点的算法如下:
   1)   在 Form_Load 时,先加载前两层节点(只是加载,不用展开)。
   2)   在 BeforeExpand 事件,判断该节点“是否首次被展开”。
         如果该节点“是否首次被展开”,那么我们就给该节点的“每个子节点”,再添加“子节点”(如果有的话)。

下面是一个加载目录树程序的完整代码:
加载目录树程序的完整代码

本文地址:http://www.cnblogs.com/anjou/archive/2006/12/28/605628.html

posted on 2006-12-28 09:37  大豆男生  阅读(5192)  评论(13编辑  收藏  举报

导航