所以我有一个 ListView,其上限约为 1000 个项目。我需要能够使用文本框的 TextChanged 事件过滤这些项目。我有一些代码适用于较少数量的项目(~400),但是当我需要重新显示所有 1000 个项目的完整列表时,大约需要 4 秒。
我不是每次都创建新的 ListViewItems。相反,我保留完整项目集合的列表,然后从中添加。无论如何, .Add 方法似乎都需要很长时间。这是一个小示例:
this.BeginUpdate();
foreach (ListViewItem item in m_cachedItems)
{
MyListView.Add(item);
}
this.EndUpdate;
我尝试只添加丢失的项目(即当前显示的项目与项目总列表之间的差异),但这也不起作用。可能会出现当前只显示一项的情况,用户清除了文本框,而我需要显示整个列表。
我在用这样的大样本从 .NET 控件中寻求性能方面不是很有经验,所以我真的不知道更好的方法。有没有办法使用 .Add() 方法,或者如果没有,只是更好的通用解决方案?