滚动包含大量项目的列表框

时间:2014-02-16 20:06:13

标签: c# asp.net listbox

对于类赋值,我应该填充一个Listbox,其中包含从字符串生成的anagrams列表,最多8个字符。说明非常明确,我必须使用Listbox。我已经做了足够的研究,知道Listbox控件对于这么大的数据集来说远非理想。然而,我的双手并列,因为这是我教授想要的。

对于从较小字符串生成的集合,生成列表后滚动浏览列表框没有问题。一旦条目字符串达到8个字符,我就无法滚动列表框来查看条目,因为找到了40,320个字符串(单词和非单词之间没有区别,所以有8个!anagrams生成)。事实上,整个表格都冻结了。

在生成字谜时,我将它们添加到ArrayList,然后在从函数返回后将数据绑定到Listbox。我已经尝试了各种方法将数据传递到Listbox(例如将它们直接添加到anagram函数内的Listbox并使用foreach),但是相同的性能问题仍然存在,因为条目数太大。我也进行了调试,知道性能问题来自于将数据导入Listbox;注释掉本节允许代码执行所有其他功能而不会出现问题。

我可以做些什么来管理这么大的列表框,以允许用户滚动而不冻结屏幕?

1 个答案:

答案 0 :(得分:1)

ListBox的Sorted属性是否设置为True?如果是这样,请在开始添加项目之前尝试将其设置为False,然后在填充ListBox后将其设置为True。您还可以考虑调用BeginUpdate()和EndUpdate()方法来抑制在填充ListBox时重新绘制它。