C# 列表类控件 出怪事了。。。高手来啊

来源:百度知道 编辑:UC知道 时间:2024/06/21 22:01:59
for (b = 0; b < listBox1.SelectedIndices.Count; b++)
listBox1.Items.Remove(listBox1.Items[listBox1.SelectedIndices[b]]);

这我自己写的,本改是删除所有选种项。可是b=0它是删除选种项的单数
改b=1它是删除选种项的双数,b=2嘛他是删除从第3位起的单数(包括第3位)

如列中有:
ATA
SQL
NET
ASP
DVD
UFO
VCD
WTO

无论你选哪几个~~b=0则删除选中项中的单号项,,,我他妈的真晕了。。
。。。谁救下我。。
随便告诉下我正确删除多选项的写法。
我仅有的50分,,奉献了。。。。。

感谢楼上所说,不过我认为说的都比较复杂,
int num = listbox.selectedItems.count ;
for(int i = 0;i<num;i++)
{
listbox.Item.remove(selectedItems[0]);
}

是因为每当你删除的时候一条记录的时候,循环第下一次的话就会把当前的值更新了,比如你选中2个选项,再删除第一个选项循环下一次的时候已经没有刚才删除的那项了,所以会导致出错,把选中的项放入数组中,判断时根据数组里的值判断就不会出错了,代码:
int Count = listBox1.SelectedItems.Count;
string[] str = new string[Count];
for (int i = 0; i < str.Length; i++)
str[i] = listBox1.SelectedItems[i].ToString();
for (int b = 0; b < Count; b++)
listBox1.Items.Remove(str[b].ToString());
如果你要是删除所有的项,直接用listBox1.Items.Clear();的方法就搞定了!!

对.如楼上所说.

当你删除某项的时候.该listbox中各项的索引都会跟着改变.比如你删除了第0项.此时.后面的项索引得前进1.来补充刚才被你删掉的项索引.原来的第2项.就会变成第1项..所以才会导致你出现的情况.

你这么写:

for(int ii=0;ii<this.ListBox1.Items.Count;ii++)
{
if(this.ListBox1.Items[ii].Selected)//如果是选中状态的话
{
this.ListBox1.Items.RemoveAt