我的Access数据库中有超过9,00,000条记录,但只有一小部分记录显示在列表框中。列表框可以容纳多少行?大约65K是我从研究中得到的答案。 谢谢!
答案 0 :(得分:2)
在Vista时引入的本机列表框控件中存在一个错误,但仍存在于Win7中。它可以防止您正确滚动超过65536 +可见项目数。除了看不到后面的项目之外,bug中最明显的部分是当你将它拖到底部时,滚动条拇指向后跳跃。
此错误不会经常进行测试。没有人希望他的用户有足够的耐心来抓住成千上万的物品。这样的程序很快就会被卸载。否则,ListBox容量仅受可用虚拟内存量的限制。如果你真的想要追求这个,那么使用ListView或DataGridView。
答案 1 :(得分:1)
我不确定具体的限制是什么(下面提供的网址提供了一些建议)我认为你想要填充列表框的项目数量可能会慢下来你的计算机很多,如果它用很多记录填充它。
也许你应该考虑使用一个允许分页的不同控件,如DataGrid或类似的东西一次显示100个结果?
此链接可能对您有用:http://codeguru.earthweb.com/forum/showthread.php?p=1715288
使用分页创建数据网格:http://support.microsoft.com/kb/305271
答案 2 :(得分:0)
我发现在winforms中使用DataGridView优于ListBox更好。关键是使用VirtualMode。我从DataGridView派生出类似于:
class CustomDgv : DataGridView { public CustomDgv() { this.BackgroundColor = SystemColors.Window; this.BorderStyle = BorderStyle.None; this.Dock = DockStyle.Fill; this.MultiSelect = false; this.AutoGenerateColumns = false; this.RowHeadersVisible = this.AllowUserToResizeRows = false; this.ReadOnly = true; this.AllowUserToAddRows = this.AllowUserToDeleteRows = false; this.CellBorderStyle = DataGridViewCellBorderStyle.None; this.VirtualMode = true; this.SelectionMode = DataGridViewSelectionMode.FullRowSelect; this.RowTemplate.Height = this.FontHeight + this.FontHeight / 2; } }
然后相应地实现虚拟部分。