我正在将项目添加到 ListView 中,如下所示:
private int AddThreadToListView(int threadNumber, string proxy, string query, string page, string links)
{
int index = 0;
listView1.SuspendLayout();
Invoke(new MethodInvoker(
delegate
{
string[] row1 = { proxy, query, page, links };
ListViewItem item = new ListViewItem();
listView1.Items.Add(threadNumber.ToString()).SubItems.AddRange(row1);
index = listView1.Items.Count - 1;
}
));
if ((listView1.Items.Count % 1000) == 0)
{
listView1.ResumeLayout();
listView1.SuspendLayout();
}
listView1.ResumeLayout();
return index;
}
然后我跟踪项目索引,以便我可以返回并从我的线程中更新它。(效果很好)。
然而问题是当我开始删除这些项目时,由于某些原因索引发生了变化..
这是我的更新和删除方法:
private void UpdateThreadListView(int threadNumber, string proxy, string query, string page, string links)
{
Invoke(new MethodInvoker(
delegate
{
listView1.BeginUpdate();
ListViewItem itm = listView1.Items[threadNumber];
itm.SubItems[1].Text = proxy;
itm.SubItems[2].Text = query;
itm.SubItems[3].Text = page;
itm.SubItems[4].Text = links;
listView1.EndUpdate();
}
));
}
private void RemoveThreadListView(int threadNumber)
{
Invoke(new MethodInvoker(
delegate
{
listView1.BeginUpdate();
listView1.Items[threadNumber].Remove();
listView1.EndUpdate();
}
));
}
我不知何故需要一个不变的索引,为每个创建的列表视图项创建一个唯一的索引。
我怎么能做到这一点?