从列表框中删除选定的值

本文关键字:删除 列表 | 更新日期: 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() 方法