c# - 如何在虚拟模式下正确 "refresh"一个 winforms ListView?

标签 c# winforms listview

我在虚拟模式下使用 ListView 类,以便 RetrieveVirtualItem 事件从独立的数据结构中提取项目。当我想对列表项进行主要编辑时,我会:

listView.BeginUpdate();
try {
    [code to reset backing data structure]
    listView.VirtualListSize = backingDataStructure.Count;
}
finally {
    listView.EndUpdate();
}

但是,这似乎无法正确刷新此 UI(有时不会显示添加到后备存储的新条目)。执行此操作的正确方法是什么?

最佳答案

我无意中遇到了这个老问题,因为我有同样的问题,而 BeginUpdate() 和 EndUpdate() 根本不起作用。未能在互联网上找到可行的解决方案,但我找到了一个可行的假设解决方案(至少就我而言)。

将 ListView 的 VirtualListSize 属性设置为 0,然后返回您希望控件显示的实际项目数。例如。

ListView.VirtualListSize = 0;
ListView.VirtualListSize = 12345;

关于c# - 如何在虚拟模式下正确 "refresh"一个 winforms ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202759/

相关文章:

c# - Int 到字符串 : cannot convert from 'method group' to 'string'

java - Android OnClickListener 更新同一 ListView 行中的文本

c# - 使用 IIS6 将 C# Web 应用程序添加到网站

c# - 没有构造函数的依赖项注入(inject) : really a bad practice?

c# - 如何检查一个字符串是否存在于另一个字符串中

c# 在任何地方检测鼠标点击(表单内部和外部)

c# - 从另一个表单获取文本框值

C# 泛型和 Winform

java - 如何根据行状态(选中,正常,...)更改 ListView 行内 TextView 的文本颜色?

c# - 为什么包含值时 Contains(value) 等于 false?