Добавить объект в BindingList <object>, пересортировать и выполнить обновление comboBox, чтобы отразить изменение - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть базовый класс Person, определенный следующим образом:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        this.Name = name;
        this.Age = age;
    }
}

Сейчас я создаю список таких людей:

private List<Person> people = new List<Person>();
people.Add(new Person("John Smith", 21));
people.Add(new Person("Bob Jones", 30));
people.Add(new Person("Mike Williams", 35));

Как только мой список заполнен, я хочу отсортировать его по имени:

// make sure that the list of people is sorted before assigning to bindingList
people.Sort((person1, person2) => person1.Name.CompareTo(person2.Name));

Далее я создаю BindingList, который я буду использовать в качестве источника данных для комбинированного списка следующим образом:

private BindingList<Person> bindingList = new BindingList<Person>(people);

comboBoxPeople.DataSource = bindingList;
comboBoxPeople.DisplayMember = "Name";
comboBoxPeople.ValueMember = "Name";

Пока все работает нормально. Но теперь у меня есть пара проблем, которые я не могу решить. Во-первых, мне нужно иметь возможность добавлять объекты Person и сохранять список отсортированным. Прямо сейчас я могу добавить новый объект Person в bindingList (через bindingList.Add(newPerson)), и он будет отображаться в поле со списком, хотя и внизу (то есть не отсортировано). Как я могу заново отсортировать bindingList после того, как я что-то добавил к нему, чтобы он выглядел сортированным в comboBox?

1 Ответ

0 голосов
/ 02 сентября 2011

Честно говоря, вам не нужен специальный список для этого. Просто используйте то, что у вас есть в руках, не изобретайте колесо другими словами.

Вот вам похожий вопрос и решение:

BindingList .Sort (), чтобы вести себя как список .Sort ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...