我从COL_name获取值集合并将每个值添加到名为 lstDisplay 的列表框中,并且值正在添加。同时我需要从COl中删除相同的值 lstAvailable 列表框,但是这些值是在 lstDispaly 中添加的,它不会从另一个列表框中删除,因为 lstAvailable 。
foreach (string drr in COl_name)
{
lstDispaly.Items.Add(drr);
lstAvailable.Items.Remove(drr);
}
谢谢..
答案 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);