2

我已经在这个问题上苦苦挣扎了几个小时。

这就是发生的事情:

当我的表单加载时,我有一个带有空List<Entity>数据源的 DataGridView。

DataGridView.Datasource = null;
DataGridView.Datasource = entity_list;

首先,我将其设置为 null 以更新 DataGridView。

然后,我可以将实体添加到该列表中,这样每次添加时都会执行这段代码。

我遇到的问题是,在将一个实体添加到列表并更新 DataSource 后,我IndexOutOfRangeException在单击 DataGridView 时得到了一个。这很奇怪。

4

1 回答 1

3

出现问题是因为我可以将实体添加到该列表中,并且由于某种原因,如果 DataSource 是一个空列表,则当您尝试向其中添加一个实体时会出现此异常。

因此,我使用的解决方案是在进行列表绑定之前询问该列表是否至少有 1 个实体。

DataGridView.DataSource = null;
if (entity_list.Count() > 0)
    {
        DataGridView.DataSource = entity_list;
    }

就是这样!解决了!我读到使用 BindingLists 可以解决这个问题,但是如果您像我一样使用 List,我希望这可以帮助您!

于 2013-03-01T15:01:02.457 回答