从ListBox中删除选定的值

时间:2013-10-22 11:12:07

标签: c# arraylist listbox

我从COL_name获取值集合并将每个值添加到名为 lstDisplay 的列表框中,并且值正在添加。同时我需要从COl中删除相同的值 lstAvailable 列表框,但是这些值是在 lstDispaly 中添加的,它不会从另一个列表框中删除,因为 lstAvailable

            foreach (string drr in COl_name)
            {
                lstDispaly.Items.Add(drr);
                lstAvailable.Items.Remove(drr);
            }

谢谢..

2 个答案:

答案 0 :(得分:0)

这意味着,你在lstAvailable中没有drr对象。 试着这样做:

foreach (string drr in COl_name)
            {
                lstDispaly.Items.Add(drr);
                lstAvailable.Items.RemoveAt(COL_name.IndexOf(drr));
            }

或者您可以尝试覆盖类

中的Equals()方法

答案 1 :(得分:0)

ListBox.ObjectCollection.Remove使用Equals来确定两个对象是否相等。那么,如果您的对象(它是什么类型?)不会覆盖Equals,那么您将比较引用。如果两个对象不是同一个引用,则它们被认为是不相等的。

另一个原因可能是ListBox包含的对象不是字符串,而是“删除”字符串。然后你可以使用RemoveAt

var obj = lstAvailable.Items.Cast<object>()
   .Select((obj, index) => new{ obj, index })
   .FirstOrDefault(x => (x.obj == null ? "" : x.obj.ToString()) == drr);
if(obj != null)
    lstAvailable.Items.RemoveAt(obj.index);