zoukankan      html  css  js  c++  java
  • C#实现虚拟控件列表显示100w个控件方法

    方法一:

    C#的FlowlayoutPanel添加一定数据量的控件后就会空白,通过虚拟列表方式可以解决这个问题。

    1、创建一个包含ScrollPanel和滚动条的用户控件,定义一个List,添加控件时,都添加到这个List中。

    2、拖动滚动条时,计算出要显示的控件,清空之前的控件,将要显示的控件从List中取出加入Controls中。
    这样同时显示的控件不超过10个,速度就很快。

    方法二:

    平时显示时使用绘制,而不是直接创建控件,所有的控件都实时计算生成,当需要编辑时才创建控件,这种方法比较繁琐。

    使用方法一实现的100w个控件显示(拖动起来很流畅)

     因为是基于DotNetBar做的,只贴出关键代码,

    List<Control> visibleItemList = GetVisibleControlList();
    if (visibleItemList.Count > 0)
    {
    	ScrollBar.Maximum = visibleItemList.Count - 1;
    
    	var elementCount = ScrollBar.Maximum -ScrollBar.Value < 10 ? ScrollBar.Maximum - ScrollBar.Value + 1 : 10;
    	Panel.Controls.AddRange(visibleItemList.GetRange(ScrollBar.Value, elementCount).ToArray());
    }
    else
    {
    	ScrollBar.Maximum = 0;
    }
    
  • 相关阅读:
    python脚本
    python引用,浅拷贝,深拷贝
    postgresql MVCC详解
    sql排它锁
    sqlalchemy使用
    ASP.Net MVC开发基础学习笔记(7):数据查询页面
    js timestamp与datetime之间的相互转换
    聊聊iOS中TCP / UDP 协议
    IOS -执行时 (消息传递 )
    Java对象的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/8466832.html
Copyright © 2011-2022 走看看