VB.net DataBindingSource:将Integer绑定到Combobox中

时间:2014-04-07 10:55:37

标签: vb.net visual-studio data-binding combobox vb.net-2010

我有一个填充的组合框,我想绑定到整数。
想要的行为是,当数据源更改为新对象时,组合框选择的值会相应地更改为绑定到它的整数。

问题是默认绑定(我只是将数据源面板上的Integer拖放到组合框上)绑定了组合框的text属性,而不是SelectedIndex。

现在我有点像这样工作:

BindingSourceName.DataSource = Object
cmbType.SelectedIndex = Object.Type  

但是我必须在用户修改时保存绑定对象的同时手动管理它 是否有正确的方法来更改默认的bindig bahaviour,使其自动将Integer绑定到我的组合框的SelectedIndex?

1 个答案:

答案 0 :(得分:1)

如果我使用ValueMember作为索引,我能得到你想要的最接近的东西。例如:

我用我的几个项目填充我的Combobox:

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将更改为选定的值。