C# Winform DataGrid 绑定List<> Or ObservableCollection<> 类型无法自动刷新问题
时间: 2023-12-11 15:02:17 浏览: 622
WinFormDataBing
在C# Winform中,如果想要在DataGrid中实时显示List<>或ObservableCollection<>类型的数据,需要手动触发DataGrid的数据刷新。
方法一:使用BindingList<>代替List<>或ObservableCollection<>
可以使用BindingList<>代替List<>或ObservableCollection<>,因为BindingList<>实现了IBindingList接口,该接口在数据源发生改变时会自动刷新绑定的控件。示例代码如下:
```csharp
BindingList<MyData> dataList = new BindingList<MyData>();
dataGridView1.DataSource = dataList;
```
方法二:手动触发DataGrid数据刷新
如果使用List<>或ObservableCollection<>,则需要手动触发DataGrid的数据刷新。可以通过以下两种方式实现:
1. 重新绑定数据源:
```csharp
List<MyData> dataList = new List<MyData>();
dataGridView1.DataSource = null;
dataGridView1.DataSource = dataList;
```
2. 利用BindingSource实现数据刷新:
```csharp
List<MyData> dataList = new List<MyData>();
BindingSource bs = new BindingSource();
bs.DataSource = dataList;
dataGridView1.DataSource = bs;
```
当数据源发生改变时,只需调用BindingSource的ResetBindings方法即可刷新DataGrid中的数据:
```csharp
dataList.Add(new MyData());
bs.ResetBindings(false);
```
以上两种方法都可以实现DataGrid与List<>或ObservableCollection<>类型数据的实时刷新。
阅读全文