• 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
  • 相关阅读:
    Spark Application的调度算法
    spark 问题
    读取hdfs文件之后repartition 避免数据倾斜
    生成树
    Curator Cache
    Curator leader 选举(一)
    Spark ZooKeeper数据恢复
    Curator 异步获取结果
    spark shuffle 相关细节整理
    matlab 求解线性方程组之LU分解
  • 原文地址:https://www.cnblogs.com/anjou/p/605628.html
Copyright © 2020-2023  润新知