0

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

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

谢谢..

4

2 回答 2

0

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

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

或者你可以尝试在你的类中覆盖 Equals() 方法

于 2013-10-22T11:21:11.293 回答
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);
于 2013-10-22T11:24:35.623 回答