我有一个列表视图,它用作简单搜索应用程序的索引。索引中的每个项目都是一个单词,然后单击该项目将该项目添加到搜索文本框中。用户可以先点击他/她喜欢的任何单词,然后单击搜索,然后在文档中搜索。 问题是,向ListView添加超过1000个左右的项目需要很多运行时间! 我设计了一个进度条并添加了一个计时器,该计时器在窗体加载后立即开始将项目添加到列表视图中。这给应用程序提供了响应,但效率仍然很低。 我怀疑索引中可能有大约100,000个单词,当文档基数增长足够多时,我需要更有效的方法来完成此操作。也许我需要改变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;
}
}
客户要求这样的观点。他有一个类似的申请与上市指数。不同之处在于客户可以在不输入任何内容的情况下查看索引中的内容,只需滚动即可。 – 2010-06-29 04:32:09
虽然最终你必须做他们所说的话,但我仍然建议把其他选项放在他们面前。也许用全部显示按钮弹出一个全屏列表。 (事实上,我可能会为我的项目做到这一点。) – 2010-06-30 00:34:54