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; }
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。