我有一个ComboBox
如下设置,其中KVPList
是IList
(KeyValuePair
如果重要的话):
comboBox.DisplayMember = "Value"; comboBox.ValueMember = "Key"; comboBox.DataSource = KVPList;
然后我设置了绑定SelectedValue
,绑定到BindingSource
(到a DataSet
).无论出于何种原因,在显示表单时,组合框始终显示为空白.但是它已正确填充(IList
显示的值很好并且可以选择).
现在,我已尽力追踪,看起来最初在绑定时正确设置了SelectedValue,但随后它被重置为某个地方null
.我玩过订单的东西也被调用,无济于事.
任何人都可以对此有所了解或建议解决方法吗?
对于记录,在同一个表单上,我ComboBox
在同一个表单上有另一个表单,它的SelectedValue
绑定是相同的BindingSource
.这DataSource
是一个DataSet
,而不是一个IList
,它就像一个魅力.这可能是做出一种选择DataTable
从IList
,但它似乎是一大堆额外的开销; 我是IList
从枚举中生成的.
哎哟.在基本上浪费了半天之后,我已经弄明白了.这对我来说完全是个错误.
将KVPList
被设置为一个IList
的,但数据字段是类型的.从本质上讲,数据绑定会触发,并设置属性.然后,绑定将触发,再次检查.由于是类型,而不是,它不会找到匹配,因此将其设置为null.KeyValuePair<
short
,string>
int
SelectedValue
DisplayMember
ValueMember
SelectedValue
ValueMember
short
int
有趣的东西必须发生在拳击和拆箱,但我太累了,无法理解为什么现在.
我会留下这个问题以防其他人遇到同样的问题.跟踪是很难的,因为我希望它能够尝试强制转换或抛出异常,而不是默默地转为null.毕竟,short
并且int
都是值类型,最后我检查(int)10 == (short)10
保持为真.