如何使用List中不可用的项设置List bound Combobox的SelectedValue

时间:2010-09-03 06:06:12

标签: c# data-binding combobox datasource selecteditem

我有一个包含Person类对象的List。我已将列表设置为ComboBox的DataSource。现在,当我将ComboBox的SelectedItem设置为Person类的新实例时,SelectedItem从不设置。为什么会这样?

    public class Person
    {
        public Person(string name, int age)
        {
            Name = name;
            Age = age;
        }
        public string Name { get; set; }
        public int Age { get; set; }
    }

    public List<Person> lstPerson = new List<Person>();

    private void Form1_Load(object sender, EventArgs e)
    {
        lstPerson.Add(new Person("Name1",1));
        lstPerson.Add(new Person("Name2",2));

        comboBox1.DataSource = lstPerson;
        comboBox1.DisplayMember = "Name";

        comboBox1.SelectedItem = lstPerson[1]; //If I put this line then it works
        //comboBox1.SelectedItem = new Person("Name2", 2); // Not working if I put this line. How can I make this possible?
    }

如何使此代码正常工作?我在很多论坛上都提过这个问题。没有任何解决方案。

1 个答案:

答案 0 :(得分:0)

ComboBox类使用IndexOf方法搜索指定的对象。此方法使用Equals方法确定相等性。

你可以在Person对象上覆盖Equals(object obj)来实现你的目标