列表框可以容纳多少行? Windows窗体应用程序

时间:2011-07-11 12:33:55

标签: vb.net winforms

我的Access数据库中有超过9,00,000条记录,但只有一小部分记录显示在列表框中。列表框可以容纳多少行?大约65K是我从研究中得到的答案。 谢谢!

3 个答案:

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

然后相应地实现虚拟部分。