【发布时间】:2012-07-24 09:05:08
【问题描述】:
使用此代码:
comboBoxCurrently.DataSource = PlatypusData.getCurrentlyVals();
comboBoxCurrently.Items.Remove("Surrounded by purplish-blue Penguins");
...我明白了,“System.ArgumentException 未处理 Message=Items 集合在设置 DataSource 属性时无法修改。"
我不想限制稍后从查询中删除的值 (...WHERE bla 'Surrounded...),因为有时该值 IS 允许(显示历史数据),我真的不想在 getCurrentlyVals() 中有一个条件语句使用一个查询语句或另一个(如果有更好的方法)。
有什么想法吗?
更新
好的,这成功了:
List<string> intermediateList = PlatypusData.getCurrentlyVals();
intermediateList.Remove("Surrounded by purplish-blue Penguins");
comboBoxCurrently.DataSource = intermediateList;
再次更新
我把它改成了 Lars 的方式:
comboBoxCurrently.Items.AddRange(PlatypusData.getCurrentlyVals().ToArray());
comboBoxCurrently.Items.Remove("Surrounded by purplish-blue Penguins");
...而且我认为这个页面包含的字符串“被紫蓝色企鹅包围”的实例比人类历史上任何一个页面都多,无论是过去还是未来。
【问题讨论】:
-
您的第一种方式对于您想要做的事情是完全可以接受的,我几乎更喜欢我发布的
AddRange解决方案。 -
好的,实际上我刚刚从 ReSharper 的 AddRange 行得到了这个:“从字符串 [] 到对象的协变数组转换可能导致写入操作时出现运行时异常”
-
这就是我更喜欢
List<string>版本的原因。例如,如果 getCurrentlyVals 返回 KeyValuePair 对象的列表,则 AddRange 将在 ToArray 部分上无效。但是对于字符串来说,它工作正常。
标签: c# .net winforms combobox datasource