gpt4 book ai didi

c# - 将大量项目添加到 ListView

转载 作者:太空狗 更新时间:2023-10-30 00:46:30 24 4
gpt4 key购买 nike

我有一个 ListView ,用作简单搜索应用程序的索引。索引的每一项都是一个词,单击该项目会将其添加到搜索文本框中。用户可以先点击她/他喜欢的任何词,然后点击搜索文本框,然后点击搜索,在文档中进行搜索。问题是向 ListView 添加大约 1000 多个项目需要大量的运行时间!我设计了一个进度条并添加了一个计时器,它会在表单加载后立即开始向 ListView 添加项目。这为应用程序提供了响应能力,但效率仍然很低。我怀疑当文档库足够大时索引中可能有大约 100,000 个单词,因此我需要一种更有效的方法来执行此操作。也许我需要将 ListView 组件更改为其他组件。这是计时器中用于将项目添加到 ListView 的代码:

if (!listViewDone)
{
int pos = 0;
ListView listView1 = Search.getInstance().getListView();
listView1.BeginUpdate();
for (pos = listViewPos; pos < termf.Count && pos < listViewPos + listViewChunk; ++pos)
{
TermFreq t = termf[pos];
listView1.Items.Add(new ListViewItem(new String[] { t.term }));
progressBar1.Value = pos;
}
listView1.EndUpdate();
listViewPos = pos;

if (pos == termf.Count)
{
listViewDone = true;
termf = null;
timer1.Enabled = false;
Visible = false;
}
}

最佳答案

正如 hmemcpy 提到的,VirtualMode 会大大加快速度。我不确定该项目的商业性质,但我使用了优秀的开源 ObjectListView其中包括一个 FastObjectListView 变体。

这基本上是一个扩展的虚拟 ListView,速度非常快,而且作为一个额外的好处,它更容易使用。该文档声称它“可以在不到 0.1 秒的时间内构建一个包含 10,000 个对象的列表”,虽然我不能保证每次使用它时我都没有注意到任何严重的延迟。不过,许可对您来说可能是个问题。

关于c# - 将大量项目添加到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com