我想检查listview
中的约3000项。这是一段代码:查看所有listview项目与巨大的列表项目?
foreach (ListViewItem item in this.lvItem.Items)
{
item.Checked = !item.Checked;
}
但是,当检查项目时,listview非常慢。请给我一些想法来解决这个问题?谢谢。
我想检查listview
中的约3000项。这是一段代码:查看所有listview项目与巨大的列表项目?
foreach (ListViewItem item in this.lvItem.Items)
{
item.Checked = !item.Checked;
}
但是,当检查项目时,listview非常慢。请给我一些想法来解决这个问题?谢谢。
这样的事情会为你工作吗? ...选中时,将项目添加到词典...未选中时,从词典中删除。没有测试代码,但想知道你是否可以这样做:
Dictionary<String, ListViewItem> Dic = listView.Items
.Cast<ListViewItem>()
.ToDictionary(x => x.Text, x => x.SubItems[0].Checked);
你问过如何更好地去做。我说的是在你的Check Event上你会想要添加项目到你的列表视图。我怀疑用户是否真的会检查所有3000,因此更改代码以决定如何处理选中的项目,我给出的示例使用Lambda表达式。如果不熟悉,那么请改变你的问题,以反映你真正需要和/或想要的是什么...
我听到一个传闻,对于大型列表项,for循环将比foreach循环工作得更快 尝试
for(int i = 0; i = < this.1vItem.Items.Count; i++)
{
//Stuff
}
我也不认为期望用户点击3000个项目是不明智的。但是最近我做了一些事情,当添加物品时,知道应该检查的物品永远不会很多,并且在之前将物品添加到列表中。
事情是这样的:
foreach (Recipient recipient in recipients)
{
var item = new ListViewItem(recipient.FirstName + " " + recipient.LastName);
item.Tag = recipient;
item.Checked = true;
lvRicipients.Items.Add(item);
}
for (int i = 0; i <= listView1.Items.Count - 1; i++)
{
if (!listView1.Items[i].Checked)
listView1.Items[i].Checked = true;
}
我的想法:你为什么需要在ListView 3000个项目?我不认为有人会通过它并逐个打勾。他们应该很好地分组和组织。 – 2011-12-19 02:35:17