检查ListBox中的重复项

时间:2015-12-21 20:26:18

标签: c#

我希望实现的目标如下:每次添加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();
       }
}

我想知道为什么我的代码无法正常工作,输入来自多个TextBoxes,表单会添加到List<Students>ListBox

1 个答案:

答案 0 :(得分:4)

这可能是因为您没有正确覆盖Equals课程中的Student方法。如果不根据类数据覆盖Equals,则会运行Equals类中的默认object方法,并且只是比较对象引用。因此,您要比较两个相同但不同的对象,这会导致false的值object.Equals,这会导致Contains方法返回false