.net 将标签和值绑定到ComboBox Winforms
我有这个密码.net 将标签和值绑定到ComboBox Winforms,.net,vb.net,combobox,null,.net,Vb.net,Combobox,Null,我有这个密码 Public Sub FillCategoryCombobox(ByVal categoryList As List(Of tblCategory), ByVal LvName As ComboBox) LvName.Items.Clear() Dim itemValue = New Dictionary(Of Integer, String)() For Each category As tblCategory In categoryList
Public Sub FillCategoryCombobox(ByVal categoryList As List(Of tblCategory), ByVal LvName As ComboBox)
LvName.Items.Clear()
Dim itemValue = New Dictionary(Of Integer, String)()
For Each category As tblCategory In categoryList
itemValue.Add(category.CategoryID, category.CategoryName)
Next category
LvName.DataSource = New BindingSource(itemValue, Nothing)
LvName.DisplayMember = "Value"
LvName.ValueMember = "Key"
End Sub
我在上收到一个错误
LvName.DataSource = New BindingSource(itemValue, Nothing)
值不能为null从未尝试将字典绑定到控件的数据源或bindingsource。 也许那是不可能的。 为什么不将categoryList用作数据源(对于BindingSource或直接使用) 或者,如果您需要维持该职位:
dim bs as new BindingSource(categoryList, nothing)
combo1.DataSource = bs
combo1.DisplayMember = "CategoryName"
combo1.ValueMember = "CategoryID"
或者创建一个列表(类别)
,而不是字典
顺便说一句,完整堆栈跟踪总是有用的。您需要BindingSource吗?如果没有,您可以直接将ComboBox数据源设置为您的列表。您可以使用更简单的东西,如KeyValuePair,而不是使用字典。
你能试一下吗
KeyValuePair[] pairs = new KeyValuePair[0];
ComboBox box = new ComboBox();
box.DisplayMember = "Value";
box.ValueMember = "Key";
box.DataSource = pairs;
KeyValuePair[]对=新的KeyValuePair[0];
ComboBox=新的ComboBox();
box.DisplayMember=“值”;
box.ValueMember=“Key”;
box.DataSource=pairs;
您可以使用字典的ToList()方法将字典绑定到数据源
编辑
一些代码:
LvName.DataSource = itemValue.ToList()
LvName.DisplayMember = "Value"
LvName.ValueMember = "Key"
您可以使用字典的ToList()方法将字典绑定到数据源,但在这种情况下,他也可以使用他发送的列表。我的类别列表包含其他属性,我只需要ID和名称值@Tony,我会尝试out@Tony请在单独的帖子中发布您的答案,您的建议有效
LvName.DataSource = itemValue.ToList()
LvName.DisplayMember = "Value"
LvName.ValueMember = "Key"