System.InvalidOperationException:“除非 DataGridView 被数据绑定到支持更改通知并允许删除的 IBindingList,否则不能以编程方式移除行。”
时间: 2024-03-23 17:40:56 浏览: 216
这个异常是因为在DataGridView控件中的行删除操作时,数据源没有实现IBindingList接口或者IBindingList接口不支持删除操作所导致的。解决这个问题需要在数据源中实现IBindingList接口并支持删除操作。
以下是一个示例:
```csharp
public class MyDataList : BindingList<MyData>
{
protected override void RemoveItem(int index)
{
MyData removedItem = this[index];
base.RemoveItem(index);
// 在这里插入自己的删除数据的代码
}
}
```
在这个示例中,我们继承了BindingList<MyData>类,并重写了RemoveItem方法。在这个方法中,我们首先保存了要删除的数据,然后调用了基类的RemoveItem方法进行数据删除操作。最后,我们可以在这个方法中添加自己的删除数据的代码。
使用这个重写的数据源,就可以在DataGridView控件中进行删除操作了。示例代码如下:
```csharp
MyDataList dataList = new MyDataList();
// 添加数据到数据源
dataGridView.DataSource = dataList;
// 删除选中的行
if (dataGridView.SelectedRows.Count > 0)
{
int index = dataGridView.SelectedRows[0].Index;
dataGridView.Rows.RemoveAt(index);
}
```
希望这个示例能够帮助您解决这个问题。
阅读全文