检查ListBox中的重复项

本文关键字:ListBox 检查 | 更新日期: 2023-09-27 18:27:35

我想要实现的如下:每次添加student时,它都应该检查ListBox内部是否有重复条目。如果是这种情况,它应该显示一个MessageBox,并防止将该项添加到ListBox

这是我目前的代码:

private void buttonAdd_Click(object sender, EventArgs e)
{
       Student student = GetStudent();
       Repository.AddStudent(student);
       if (listBoxStudents.Items.Contains(student))
       {
            MessageBox.Show("This student already exists!");
       }
       else
       {
            listBoxStudents.Items.Add(student);
            ClearandFocus();
       }
}

我想知道为什么我的代码不能正常工作,输入来自一个添加到List<Students>ListBox的表单中的几个TextBoxes

检查ListBox中的重复项

发生这种情况可能是因为您没有在Student类中正确重写Equals方法。如果不基于类数据重写Equals,则会运行object类中的默认Equals方法,该方法只比较对象引用。因此,您正在比较两个相同但不同的对象,这将导致object.Equals中的值false,从而导致Contains方法返回false