从列表框中删除选定的值
本文关键字:删除 列表 | 更新日期: 2023-09-27 18:36:19
我正在从COL_name获取值的集合,并将每个值添加到名为lstDisplay的列表框中,并且正在添加值。同时我需要从 lstAvailable ListBox 中删除 COl_name 中的相同值,但这些值正在 lstDispaly 中添加,它不会从另一个列表框中删除 命名为 lstAvailable。
foreach (string drr in COl_name)
{
lstDispaly.Items.Add(drr);
lstAvailable.Items.Remove(drr);
}
谢谢。。
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);
这意味着,您在 lstAvailable 中没有 drr 对象。尝试这样做:
foreach (string drr in COl_name)
{
lstDispaly.Items.Add(drr);
lstAvailable.Items.RemoveAt(COL_name.IndexOf(drr));
}
或者你可以尝试在你的类中覆盖 Equals() 方法