将对象添加到BindingList <object>,重新排序并使comboBox更新以反映更改</object>

时间:2011-09-01 19:31:17

标签: c# list sorting combobox bindinglist

我有一个像这样定义的基本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对象并使列表保持排序。现在,我可以向bindingList添加一个新的Person对象(通过bindingList.Add(newPerson)),它将显示在comboBox中,尽管在底部(即未排序)。一旦我添加了一些东西,它怎么能重新排序bindingList,以便它出现在comboBox中排序?

1 个答案:

答案 0 :(得分:0)

老实说,我不需要特殊清单。只要用你手中的东西,换句话说就不要重新发明轮子。

以下是与您相同的问题和解决方案:

BindingList<T>.Sort() to behave like a List<T>.Sort()