C#绑定到SortedBindingList的DataGridView未显示排序

C#绑定到SortedBindingList的DataGridView未显示排序,c#,datagridview,bindinglist,C#,Datagridview,Bindinglist,我已经实现了SortedBindingList类,如 然后,我成功地向其中添加了相同类型的对象 我在表单上有一个DataGridView,其BindingSource设置为列表。单击列标题时,列表将在SortedBindingList对象中排序,但是这种更改不会反映在DataGridView中。DataGridView上是否有需要设置的属性或需要订阅的事件 SortedBindingList<CustomObject> list = new SortedBindingList<

我已经实现了SortedBindingList类,如

然后,我成功地向其中添加了相同类型的对象

我在表单上有一个DataGridView,其BindingSource设置为列表。单击列标题时,列表将在SortedBindingList对象中排序,但是这种更改不会反映在DataGridView中。DataGridView上是否有需要设置的属性或需要订阅的事件

SortedBindingList<CustomObject> list = new SortedBindingList<CustomObject>();
//Add Objects to list
CustomObjectBindingSource.DataSource = list; 
dataGridViewSource1.DataSource = CustomObjectBindingSource; 
SortedBindingList=新的SortedBindingList();
//将对象添加到列表中
CustomObjectBindingSource.DataSource=列表;
dataGridViewSource1.DataSource=CustomObjectBindingSource;
如果我在Compare方法中的SortedBindingList代码中放置一个断点,在该代码中返回结果,我可以看到列表被正确排序,只是DataGridview没有显示正在排序的列表。我错过了什么


谢谢编辑:对不起!不知什么原因,我以为是asp.net

在你的情况下,你需要

   BindingSource bs = new BindingSource();
   bs.DataSource = bs;
   dataGridView.DataSource = bs;
编辑2:

我只是用SortableBindingList类这样做过

    SortableBindingList<Person> list = new SortableBindingList<Person>();
    list.Add(new Person{Name = "abc",Email = "def"});
    list.Add(new Person { Name = "bcd", Email = "aqz" });
    dataGridView1.DataSource = list;

这对我很有用。

谢谢你的回复,但我有点困惑。我在DataGridView或我将其设置为的BindingSource上看不到可用的DataBind()方法。您能更具体地说明哪个对象具有DataBind()方法吗?再次感谢StackOverflowException。这不是我已经在做的事情吗?唯一的区别是变量名与我所知道的不同。我假设,可能是错误的,bs.DataSource应该设置为列表,而不是返回到数据源本身。解决了它。。。有一个愚蠢的编码错误。列表=项目,因为列表很重要。我以不同的方式声明了这一点,甚至没有意识到这一点。
    public class Person
    {
        public string Name { get; set; }
        public string Email { get; set; }
    }