Как установить SelectedValue списка со связанным списком с элементом, недоступным в списке - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть список с объектами класса Person. Я установил список в качестве источника данных ComboBox. Теперь, когда я устанавливаю SelectedItem ComboBox новый экземпляр класса 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 голосов
/ 03 сентября 2010

Класс ComboBox ищет указанный объект с помощью метода IndexOf. Этот метод использует метод Equals для определения равенства.

Вы можете переопределить Equals (объект obj) на объекте Person для достижения своей цели

...