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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM