关于ListBox控件的一个很逗的错误:“设置DataSource属性后无法修改项集合。”...

在使用DataSource属性绑定数据源后尝试直接从ListBox删除项时遇到错误。文章探讨了两种解决方案:一是改变绑定方式,避免直接绑定;二是先删除数据源对应行再接受更改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

cbBox.DataSource  =  list;

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

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

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

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

转载于:https://www.cnblogs.com/Athos/archive/2008/01/04/1026238.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值