刚刚在Coding这样一个场景:用户勾选了某个复选框之后,将一个相关的下拉框中的某些项Remove掉。代码很简单就不贴出来了。没想到调试时报了一个“设置DataSource属性后无法修改项集合。”的错误,Google一下,原来是因为该下拉框是通过指定DataSource属性绑定的:

cbBox.DataSource = list;

有人解释说,在winForm程序中,如果这样绑定,是不允许对ListBox的项进行删除操作的。原因是因为这样绑定之后是直接和数据源DataTable相关,改动项会对DataTable造成影响。而解决办法是

1、修改绑定方式,不要直接指定DataSource属性,而是把数据拿出来一个一个添加到ListBox上去,将ListBoxDataTable脱离关系。

2、先把DataTable的对应行删掉,然后acceptchanges()就好了。

我没有查找这个问题的根源,不知道这是不是官方的解释。如果是的话那就太逗了,建议微软给设计该错误的哥们颁发一个“最佳幽默奖”——你焉知我指定DataSource属性就一定绑定到DataTable呢?我动态构造一个IList绑定不行吖?再说了,就算绑定到DataTable,就这样不允许删除ListBox的项也不太好罢。

相关文章:

  • 2021-12-13
  • 2022-01-24
  • 2021-07-20
  • 2021-07-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-25
  • 2021-08-29
相关资源
相似解决方案