我知道这是一个愚蠢的问题,我需要让你们知道我完全清楚在99%的情况下用c#中的这么多元素制作一个列表框是没用的:
话虽如此说我需要这样做......有没有办法用40000元素填充列表框而不会完全破坏性能/冻结,谢谢!
注意:我已经尝试过,这是根据教授的确切要求...当通过DataSource和DataBind添加40000个元素时,应用程序会冻结
答案 0 :(得分:1)
for(i=0;i<40000;i++)
{
listBox1.Items.Add("click me");
}
答案 1 :(得分:1)
即使可能(我从未尝试过),此表单的可用性将为0.
在这种情况下,更有用的实现是通过查找文本框和列表,用户可以在其中输入文本以搜索与此文本匹配的记录,并将其显示在任何类型的列表中。
答案 2 :(得分:1)
当然可以这样做,但不太可行。
当使用像WinForms或WPF这样的桌面技术时,对于像这样的大量项目,你最好使用类似自动完整文本框的东西,并在用户键入两个或三个字符后将其设置为过滤/搜索。在这种情况下,您还可以使用提供滚动虚拟化的控件 - 这意味着在下拉列表的滚动部分中只创建了有限数量的UI元素,并且在滚动发生时会重复使用这些元素。如果不使用虚拟化,则会为每个滚动查看的列表项创建一个新元素。 (请注意,Silverlight控件具有此功能 - 以防它是一个选项)。
对于ASP.NET虽然我建议你不要做任何会导致大量数据传输的事情(大项目或小项目,但很多项目),因为它不会有效。相反,你应该看看谷歌做的事情 - 以分页的方式检索搜索结果。