C# 单击DataGridView时发生IndexOutOfRangeException错误

C# 单击DataGridView时发生IndexOutOfRangeException错误,c#,winforms,exception,datagridview,click,C#,Winforms,Exception,Datagridview,Click,我为这个问题挣扎了几个小时 情况就是这样: 加载表单时,我有一个DataGridView,其中有一个空的列表作为数据源 DataGridView.Datasource = null; DataGridView.Datasource = entity_list; 首先,我将其设置为null,以便更新DataGridView 然后,我可以将实体添加到该列表中,这样每次添加一个实体时都会执行一段代码 我遇到的问题是,在向列表中添加一个实体并更新数据源之后,当我单击DataGridView时,我得到了

我为这个问题挣扎了几个小时

情况就是这样:

加载表单时,我有一个DataGridView,其中有一个空的
列表
作为数据源

DataGridView.Datasource = null;
DataGridView.Datasource = entity_list;
首先,我将其设置为null,以便更新DataGridView

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


我遇到的问题是,在向列表中添加一个实体并更新数据源之后,当我单击DataGridView时,我得到了一个
索引AutoFrangeException
。这是一个非常复杂的问题。

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

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

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

就这样!解决了的!我读到使用绑定列表可以解决这个问题,但如果您像我一样使用列表,我希望这可以帮助您

我想你误解了“回答你自己的问题”这一部分,请再读一篇time@SonerGönül你什么意思?我刚读过,上面写着可以这样做。我只是花时间写这篇文章,因为我在网络上找不到任何解决方案。我只是想帮助一个可能和我处境相同的人,但你并没有用问题的形式表达出来,也就是链接中的第二句话。3.我不知道在这里帮助别人很难。。这是你第二次@CL4PTR4P不是在帮忙而是在打扰你。我不想为此得分,我只是想帮助某人。@Andres:我不想成为麻烦。我只是指出你没有遵循博客的指导方针。如果你觉得这没有帮助,那我就不知道该说什么了。这对我有帮助!我确实想知道在这个项目的更深层次上发生了什么。值得一提的是,我的数据源是一个KeyedCollection。我从中得到的关键是,您永远不希望将空列表绑定到DGV。我尝试了BindingList解决方案,它也起了作用,但在我看来,这要干净得多。谢谢