调用BindingSource.RemoveCurrent时如何更新基础列表

本文关键字:更新 列表 RemoveCurrent BindingSource 何更新 调用 | 更新日期: 2023-09-27 18:29:00

我有以下简单类;

public class MyObject
{
    public int Id {get;set;}
    public string Name {get;set;}
}
List<MyObject> oList = new List<MyObject>();

我的列表中填充了一些项目。然后,我用以下列表填充BindingSource:;

MyBindingSource.DataSource = oList; //contains some items in a list

我的BindingSource链接到DataGridView(在本例中这并不重要),但根据DataGridView中所选的行,我会为我的数据网格视图单击以下方法按钮;

private void MyDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == btnRemove.Index)
    {
        MyBindingSource.RemoveCurrent();
    }
}

呼叫

MyBindingSource.RemoveCurrent()

从DataGridView中删除项,但如何从oList的基础列表中删除项。

我认为分配MyBindingSource.DataSource=oList意味着MySBindingSource.DDataSource中显示的列表实际上指向oList?

调用BindingSource.RemoveCurrent时如何更新基础列表

List<T>不够聪明,无法知道事情已经发生了变化,所以请尝试使用System.ComponentModel中的BindingList<T>

BindingList<MyObject> oList = new BindingList<MyObject>();