字典作为 ComboBox 的数据源
Posted
技术标签:
【中文标题】字典作为 ComboBox 的数据源【英文标题】:Dictionary as a Datasource for a ComboBox 【发布时间】:2015-02-18 20:28:33 【问题描述】:类似于previous question,但对于 .NET 4.5,当我尝试时接受的答案不起作用。
我正在尝试从字典中填充 ComboBox。没有编译器错误,但我得到一个 ArgumentException:“复杂 DataBinding 接受 IList 或 IListSource 作为数据源”。这让我觉得我绑定的方式,ComboBox 只会让我填充其中一个或另一个,因为 List 只是一维的。
简化代码:
Dictionary<string,string> orgs = await api.CreateOrgMap();
organizationListComboBox.DataSource = orgs;
我可以使用带有字段键和值的对象列表,但是当字典 应该 工作并最终得到一个奖励对象时,这似乎很愚蠢。我做错了什么/这不再可能吗?
我不确定这有什么不同,但我正在使用 WinForms。
【问题讨论】:
您是否希望 Key 和 Value 都显示在列表中,这是您要完成的任务吗? 不。我希望能够从 ComboBox 中选择一个键并获得匹配的值。不过,通过字典的键搜索似乎是错误的方向。 您能否发布您引用的问题中提供的解决方案有什么问题:***.com/a/6412893/95573 当然!调用organizationListComboBox.DataSource = orgs;
时会抛出 ArgumentException
【参考方案1】:
我认为您可能没有遵循所引用主题中的示例?
organization.ListComboBox.DataSource = orgs;
应该是:
organization.ListComboBox.DataSource = new BindingSource(orgs, null);
【讨论】:
...谢谢!我尝试了那个构造函数,但我一定跳过了答案中写的内容。 我刚试过,但我没有足够的代表来支持你的答案,但再次感谢你! 谢谢!效果很好..这是中标!你知道如何摆脱显示的括号.. [ ..value.. ]【参考方案2】:我在 VB.NET 中一直使用 List。字典应该以同样的方式工作。
cmbox.DataSource = GetStores(); //this function is returning a list
cmbox.DisplayMember = "Joined"; //this is a property for an item in the list
cmbox.ValueMember = "ID"; //this is another property for an item in the list
加入 = 关键 ID = 价值 - 或反之亦然 希望 C# 翻译是正确的,希望对您有所帮助。
循环遍历字典以创建列表(即删除键然后将列表放入组合框中)也可能更容易。因为您没有使用组合框的键。
【讨论】:
在这种情况下,GetStores() 返回一个相当于 List 的对象,对吧? 是的,这就是为什么我认为字典可以对 Key 和 Value 做同样的事情。 (GetStores()) 返回许多属性,但我只将这两个用于组合框。以上是关于字典作为 ComboBox 的数据源的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 ObjectDataProvider 将 ComboBox 绑定到通用字典
python tkinter 中的combobox如何添加字典?