gpt4 book ai didi

.net - 将 ComboBox 绑定(bind)到 IList 并使用 SelectedValue

转载 作者:行者123 更新时间:2023-12-04 18:17:35 25 4
gpt4 key购买 nike

我有一个 ComboBox设置如下,其中KVPListIList (KeyValuePair 如果重要的话):

comboBox.DisplayMember = "Value";
comboBox.ValueMember = "Key";
comboBox.DataSource = KVPList;

然后我设置了与 SelectedValue 的绑定(bind)。 , 绑定(bind)到 BindingSource (到 DataSet )。无论出于何种原因,在显示表单时组合框总是显示为空白。但是,它已正确填充( IList 的值显示得很好并且可以选择)。

现在,我已尽我所能进行跟踪,它似乎在绑定(bind)时最初正确设置了 SelectedValue,但随后在某处它被重置为 null .我也玩过事情被调用的顺序,但无济于事。

任何人都可以对此有所了解或提出解决方法吗?

作为记录,在同一张表格上,我还有另一个 ComboBox在同一表格上,其 SelectedValue绑定(bind)到同一个 BindingSource . DataSourceDataSet ,而不是 IList它就像一个魅力。可以选择制作 DataTable来自 IList ,但似乎有很多额外的开销;我正在生成 IList从枚举。

最佳答案

哎哟。在这个基本上浪费了半天之后,我已经弄清楚了。这完全是我的错误。
KVPList设置为 IListKeyValuePair< short ,string> ,但数据字段的类型为 int .本质上,数据绑定(bind)会触发,并设置 SelectedValue属性(property)。然后 DisplayMemberValueMember绑定(bind)会触发,检查 SelectedValue再次。由于ValueMembershort 类型,而不是 int ,它不会找到匹配项,因此将其设置为 null。

装箱和拆箱一定会发生一些有趣的事情,但我现在太累了,无法理解为什么。

我会留下这个问题,以防其他人遇到同样的问题。很难追踪,因为我希望它要么尝试强制转换,要么抛出异常,而不是默默地变为 null。毕竟,shortint都是值类型,最后我检查了 (int)10 == (short)10成立。

关于.net - 将 ComboBox 绑定(bind)到 IList 并使用 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/420998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com