• 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
  • 相关阅读:
    Linux CNC学习笔记
    springboot实现第三方钉钉扫码登录
    求教:Knife4jAggregationDesktop访问报错HTTP ERROR 404
    Win10使用fvm管理多个Flutter版本
    beego下让swagger按照更新了controllers的接口信息自动更新commentsRouter_controllers.go
    设置Windows Server 2022、Win10、Win11自动登录的简单方法OK
    查找默认安装的python路径,并输出到 FindPythonPathX_output.txt
    IDEA翻译插件translate
    IDEA插件:lombok
    工具使用org.openjdk.jol查看对象在内存中的布局
  • 原文地址:https://www.cnblogs.com/anjou/p/605628.html
Copyright © 2020-2023  润新知