日期:2014-05-18  浏览次数:20905 次

去除listbox中重复项,具有成功案例的情况下,又失败了,顶帖也送分了
原来,我做了一个页面,需要去除listbox中的重复项,页面上有两个listbox,其中一个需要去除重复项
直接在.cs中写入以下代码即可
C# code

//去除listbox中的重复项开始
    private void Distinct(ListItemCollection items)
    {
        for (int i = 0; i < items.Count; i++)
        {
            for (int j = i + 1; j < items.Count; j++)
            {
                if (items[i].Equals(items[j]))
                    items.Remove(items[j]);
            }

        }
    }

    //去除listbox中的重复项结束




但是我又做一个页面,有四个listbox,其中三个也需要去除重复项,结果把上面这段代码复制到相应的.cs文件中,结果一个也没过滤掉,晕,死,不知道怎么因事,请高手帮助一下啊

------解决方案--------------------
首先listBox1.Sorted = true;
然后循环
比较当前这个是不是和下一个一样,一样的话就remove
object o = listBox1.Items[0];
for (int i = 1; i < listBox1.Items.Count; i++)
{
if (o.Equals(listBox1[i]))
listBox1.Items.Remove(i);
else
o = listBox1.Items[i];

}

------解决方案--------------------
探讨
首先listBox1.Sorted = true; 
然后循环 
比较当前这个是不是和下一个一样,一样的话就remove 
object o = listBox1.Items[0]; 
for (int i = 1; i < listBox1.Items.Count; i++) 

if (o.Equals(listBox1[i])) 
listBox1.Items.Remove(i); 
else 
o = listBox1.Items[i]; 



------解决方案--------------------
1楼的正解~

------解决方案--------------------
private void Deleted(object obj)
{
System .Collections .ArrayList list=new System.Collections.ArrayList ();
list .Add (((ListBox )obj).Items [0]);
for (int i = 1; i < listBox1.Items.Count; i++)
{
if (list.Contains(listBox1.Items[i]))
continue;
else
list.Add(listBox1.Items[i]);
}

listBox1.DataSource = list;

}
------解决方案--------------------
Deleted(this.listBox1);
private void Deleted(object obj)
{
System .Collections .ArrayList list=new System.Collections.ArrayList ();
list .Add (((ListBox )obj).Items [0]);
for (int i = 1; i < listBox1.Items.Count; i++)
{
if (list.Contains(listBox1.Items[i]))
continue;
else
list.Add(listBox1.Items[i]);
}

listBox1.DataSource = list;

}
------解决方案--------------------
先ding
------解决方案--------------------
探讨
首先listBox1.Sorted = true; 
然后循环 
比较当前这个是不是和下一个一样,一样的话就remove 
object o = listBox1.Items[0]; 
for (int i = 1; i < listBox1.Items.Count; i++) 

if (o.Equals(listBox1[i])) 
listBox1.Items.Remove(i); 
else 
o = listBox1.Items[i]; 



------解决方案--------------------