C# 字典作为组合框的数据源

C# 字典作为组合框的数据源,c#,winforms,dictionary,combobox,C#,Winforms,Dictionary,Combobox,类似于a,但是对于.NET4.5,当我尝试时,接受的答案不起作用 我正试图从字典中填充一个组合框。没有编译器错误,但我得到一个ArgumentException:复杂数据绑定接受IList或IListSource作为数据源。这让我觉得我绑定的方式,ComboBox只允许我填充其中一个,因为列表只是一维的 简化代码: Dictionary<string,string> orgs = await api.CreateOrgMap(); organizationListComboBox.D

类似于a,但是对于.NET4.5,当我尝试时,接受的答案不起作用

我正试图从字典中填充一个组合框。没有编译器错误,但我得到一个ArgumentException:复杂数据绑定接受IList或IListSource作为数据源。这让我觉得我绑定的方式,ComboBox只允许我填充其中一个,因为列表只是一维的

简化代码:

Dictionary<string,string> orgs = await api.CreateOrgMap();
organizationListComboBox.DataSource = orgs; 
我可以使用一个包含Key和Value字段的对象列表,但当字典能够工作并最终得到一个额外的对象时,这看起来很愚蠢。我做错了什么/这不再可能了吗


我不确定这会有什么不同,但我使用的是WinForms。

我在VB.NET中一直使用列表。词典也应该以同样的方式使用

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的翻译是正确的,希望它能帮助你


也可以更容易地在字典中循环创建一个列表,即放下键,然后将列表放入组合框。因为您没有使用组合框的键。

我想您可能没有遵循参考主题中的示例

organization.ListComboBox.DataSource = orgs; 
应该是:

organization.ListComboBox.DataSource = new BindingSource(orgs, null);

您是否希望在列表中同时显示键和值,这就是您试图实现的目标?不。我希望能够从组合框中选择一个键并获得匹配值。通过搜索字典的键来获得答案似乎是个错误的方向。你能在你参考的问题中给出答案的错误吗:当然!organizationListComboBox.DataSource=orgs时引发ArgumentException;在这种情况下,GetStores返回一个与List等价的对象,对吗?是的,这就是为什么我认为字典可以对Key和Value执行相同的操作。GetStores返回许多属性,但我仅将这两个属性用于组合框。。。。谢谢我试过那个构造器,但我一定跳过了答案中写的内容。我刚试过,但我没有足够的代表投票支持你的答案,但再次感谢你!谢谢很好。。这是中标!你知道如何去掉显示的括号吗。。[…价值]