C# 显示大量数据

C# 显示大量数据,c#,.net,C#,.net,我正在制作一个媒体库模型,我有一个歌曲数据库(超过9000首曲目),我想显示和排序。我不确定哪个GUI控件最适合使用,也不确定如何最好地将所有条目添加到控件中 显然,使用listview并一次添加一个条目需要很长时间。目前,数据库正在返回媒体对象数组中的所有曲目(mediateentry[]-我定义的结构)。我不太了解.NET的数据绑定系统以及它可能带来的性能优势 数据库也是可搜索的,因此我将根据搜索条件更改GUI控件中显示的信息。类似于中的DataGridView或ListView的功能应该可

我正在制作一个媒体库模型,我有一个歌曲数据库(超过9000首曲目),我想显示和排序。我不确定哪个GUI控件最适合使用,也不确定如何最好地将所有条目添加到控件中

显然,使用listview并一次添加一个条目需要很长时间。目前,数据库正在返回媒体对象数组中的所有曲目(
mediateentry[]
-我定义的结构)。我不太了解.NET的数据绑定系统以及它可能带来的性能优势


数据库也是可搜索的,因此我将根据搜索条件更改GUI控件中显示的信息。

类似于中的
DataGridView
ListView
的功能应该可以正常工作;这避免了预先处理所有数据的需要

然而-我怀疑
mediaEntry
是否应该是
struct
-听起来像是

在.NET中编写
struct
是非常罕见的。Listview控件有一个虚拟模式,您可以根据需要提供可查看的数据。它实际上比听起来更容易使用。签出VirtualMode属性和RetrieveVirtualItem事件。

您可能想尝试一下。它的使用非常方便,使用时具有优异的性能


注意:我不是这个库的开发人员,我之所以宣传它,只是因为我在我的一个项目中使用了它。

Eh,没有多大区别(结构或类),因为它总是在同一个数组中传递-正确吗?每次从数组中取出它时,它都会被克隆(因为它是一个mediaEntry[]),这可能会有成本,但更大的问题只是语义;它应该表现为一个对象,而不是一个值。仅供参考-此绑定在WPF中比表单演示链接更容易。尽管有时候WPF中的ListView有一个退出默认虚拟化模式的坏习惯。如果它这样做了,那么很容易强迫它这么做://其他listview内容也足够公平。Brian Noyes的书《Windows Forms 2.0的数据绑定》中有一个很好的例子,在DataGridView中使用虚拟模式,可以轻松渲染一百万个项目。[第233页]