【发布时间】:2017-10-16 12:04:22
【问题描述】:
我有一个 C# 程序向 REST API 发出 http 请求并将数据保存到列表中。
我只是使用DataGridView.DataSource 每 5 秒填充一次 DataGridView。
private void timerStatusManager_Tick(object sender, EventArgs e)
{
ControllerListImpressions.AddItemPrinterList();
PrinterList = ControllerListImpressions.PrinterList;
// dataGrid.DataSource = null;
dataGrid.DataSource = PrinterList.Impressions;
timerStatusManager.Start();
}
AddItemPrinterList 方法只是在请求有新项目时更新列表。
PrinterList.Impressions 是此处定义的列表:
public List<Impression> Impressions = new List<Impression>();
我的问题是 dataGrid 在列表有一个新项目时永远不会更新。当我将DataSource 设置为null 时,它会正确更新,但我在DataGridView 有一个CheckBox。当 DataGridView 以这种方式更新时,此 CheckBox 总是变为 false。
【问题讨论】:
-
使用
BindingList<Impression>代替List<Impression> -
即使使用这种和平的代码,它也不起作用。
var actualList = PrinterList.Impressions;var listBinding = new BindingList<Impression>(actualList); -
没有一个最小的、可验证的例子,我不知道出了什么问题,但它可以工作,看看这个演示:github.com/crowcoder/BindingListDemo
标签: c# datagridview datagridviewcheckboxcell