List<object> list_清空 = new List<object>(); //创建一个集合,用来装没有选中的
foreach (var c in listBox4.Items)
{
if (c != listBox4.SelectedItem)
{
list_清空.Add(c); //把没有选定的项,加进集合
}
}
foreach (var c in list_清空)
{
listBox4.Items.Remove(c); //执行删除此项
}结果我用Ctrl键选定多项,结果怎么最后只留下一项呢,有些选定了的,也删了
foreach (var c in listBox4.Items)
{
if (c != listBox4.SelectedItem)
{
list_清空.Add(c); //把没有选定的项,加进集合
}
}
foreach (var c in list_清空)
{
listBox4.Items.Remove(c); //执行删除此项
}结果我用Ctrl键选定多项,结果怎么最后只留下一项呢,有些选定了的,也删了
foreach (var c in listBox4.Items)
{
if (c != listBox4.SelectedItem) {
list_清空.Add(c); //把没有选定的项,加进集合
}
}
foreach (var c in list_清空)
{
listBox4.Items.Remove(c); //执行删除此项
}这里应该有问题吧,你都说多选择了,能这样比吗
foreach (var c in listBox4.Items)
{
if (!listBox4.SelectedItems.Contains(c))
{
list_清空.Add(c);
}
}
但这样不报错
foreach (var c in listBox4.Items)
{
if (c != listBox4.SelectedItem)
{
list_清空.Add(c);
}
}上面那个为什么报错呢:说枚举列表发生了改变,两段都改变了的啊
{
listBox4.Items.RemoveAt(listBox4.SelectedIndices[i]);
}这个就可以实现了!没必要弄的那么复杂。
for (int i = 0; i < this.listBox1.Items.Count; i++)
{
if (!this.listBox1.SelectedIndices.Contains(i))
{
list_清空.Add(this.listBox1.Items[i]); //把没有选定的项,加进集合
}
}
foreach (var c in list_清空)
{
listBox1.Items.Remove(c);
//执行删除 此项
}
for (int i = 0; i < this.listBox1.Items.Count; i++)
{
if (!this.listBox1.SelectedIndices.Contains(i))
{
list_清空.Add(this.listBox1.Items[i]); //把没有选定的项,加进集合
}
}
foreach (var c in list_清空)
{
listBox1.Items.Remove(c);
//执行删除 此项
}
{
List<ListItem> list = new List<ListItem>();
for (int i = 0; i < ListBox1.Items.Count; i++)
{
if (!ListBox1.Items[i].Selected)
list.Add(ListBox1.Items[i]);
}
foreach (ListItem item in list)
ListBox1.Items.Remove(item);
}