ale*_*dee 24 .net c# listview datagridview winforms
我想在表格中显示> 50000行.哪个是最好的控件:DataGrid或ListView(在详细信息视图中)?哪些控件具有更好的性能?
Cod*_*ray 29
正如汉斯在对原始问题的评论中所说的那样,他们都会有糟糕的表现,仅仅是因为你的用户在同时显示如此多的数据线的疯狂情况下肯定会遇到的不满.
但是,如果在您的应用程序中这是不可避免的(并且您提供了非常好的搜索功能),那么无论您决定使用哪种控件,都应该强烈考虑使用虚拟模式选项.这意味着您必须提供自己的数据管理操作,而不是依靠控件为您执行此操作.优点是事情要快得多.正如文件所说:
虚拟模式设计用于非常大的数据存储.当
VirtualMode
属性为true时,您创建一个DataGridView
具有设定数量的行和列,然后处理该CellValueNeeded
事件以填充单元格.虚拟模式需要实现底层数据缓存,以根据用户的操作处理DataGridView单元的填充,编辑和删除.有关实现虚拟模式的详细信息,请参阅如何:在Windows窗体DataGridView控件中实现虚拟模式.
或者,对于ListView
控件:
将该
VirtualMode
属性设置为true会使其ListView
进入虚拟模式.在虚拟模式下,正常Items
集合未使用.相反,ListViewItem
对象是在ListView需要时动态创建的.在许多情况下,虚拟模式可能很有用.如果
ListView
必须从已经在内存中的非常大的集合填充ListViewItem
对象,则为每个条目创建对象可能是浪费的.在虚拟模式下,仅创建所需的项目.在其他情况下,ListViewItem
可能需要经常重新计算对象的值,并且对整个集合执行此操作将产生不可接受的性能.在虚拟模式下,仅计算所需的项目.要使用虚拟模式,您必须处理
RetrieveVirtualItem
事件,每次ListView
需要项目时都会引发该事件.此事件处理程序应创建ListViewItem
属于指定索引的对象.此外,必须将该VirtualListSize
属性设置为虚拟列表的大小.处理
SearchForVirtualItem
事件可以在虚拟模式下进行搜索.如果未处理此事件,则FindItemWithText
和FindNearestItem
方法将返回null.您可以处理
CacheVirtualItems
事件以维护ListViewItem
对象的缓存.如果创建ListViewItem
对象的计算或查找很昂贵,则维护缓存可以提高性能.如果
View
属性设置为Tile,则当VirtualMode
设置为true 时,该值将自动更改为LargeIcon .在虚拟模式下,
Items
禁用该集合.试图访问它会产生一个InvalidOperationException
.CheckedItems
收集和SelectedItems
收藏也是如此.如果要检索选定或选中的项目,请改用SelectedIndices
和CheckedIndices
集合.
归档时间: |
|
查看次数: |
31657 次 |
最近记录: |