最接近我能达到你想要的是如果我使用ValueMember索引。例如:
我填补我的组合框,像这样一对夫妇项目:
Public Class NameValue
Property Name as String
Property Type as Integer
Public Sub New(ByVal pName as String, ByVal pVal as Integer)
Name = pName
Type = pValue
End Sub
End Class
Dim cmbList As New List(Of NameValue)
cmbList.Add(New NameValue("Name",1)
cmbList.Add(New NameValue("Name2",2)
cmbList.Add(New NameValue("Name3",3)
cmbType.Items = cmbList
cmbType.ValueMember = "Value"
cmbType.DisplayMember = "Type"
现在第一阶段已经完成。 Combobox包含三个名称和值绑定在一起的项目。下一步是设置你所要求的:将ComboboxValue绑定到Object类。
cmbType.DataBindings.Add(New Binding("SelectedValue", BindingSourceName, "Type", False, DataSourceUpdateMode.OnPropertyChanged))
只要BindingSource“BindingSourceName.DataSource”发生更改,应更新组合框。如果您更改组合框,Object.Type将更改为选定的值。
那么,obv这不能编译(cmb.Items是只读等),但该方法似乎工作。我用一个字典(这是一个vb.net标准)替换了自定义类,并使用SelectedIndex更改了绑定中指定的属性。而不是项目= ...这是不可行的我用cmbType.DataSource =新的BindingSource(cmbTypeItems,无),从cmbTypeItems,这是我的字典中的键值。最后一个问题是:它似乎工作,是否有两个绑定在同一控件上处于活动状态是正确的? – DkSw
对不起,项目是数据源。 – WozzeC
我不能看到有两个绑定的任何问题,因为他们是两个不同的东西。一个绑定用于内容,一个绑定用于值(在这种情况下为索引)。 – WozzeC