我正在尝试使用组合框更改列表框中的值。
我的组合框数据源是一个绑定源,它的数据源是一个keyvaluepair状态集合。 Key是State缩写,值是一个State State,它包含有关状态的相关信息。 我的列表框的数据源是一个bindingsource,它的数据源包含一个包含State值的记录列表。
当用户点击列表框中的项目时,我希望组合框中的值反映selecteditems状态值中的值。然后,如果我更改该值,我希望更新列表框项。 目前我可以正确加载Combobox,我可以正确加载列表框。使用下面的代码,当我在列表框中的项目之间切换时,组合框不会更新;但如果我改变组合框中的值,则listitem会发生变化,如果我移开记录并重新开启,则值将继续重新填充。但是,当我移动到我没有编辑的项目时,组合框文本再次变为空白。以下是我的代码。我如何更改绑定以便:
XML文件,它是Listbox Control的数据源:
<?xml version="1.0"?>
<ConversionRecords xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ConversionRecord>
<InboundOriginCity>Seaford 0</InboundOriginCity>
<InboundOriginState>
<Key>AS</Key>
<PostalAbbreviation>AS</PostalAbbreviation>
</InboundOriginState>
<InboundDestinationCity>Salisbury 0</InboundDestinationCity>
<InboundDestinationState>
<Key>AS</Key>
<PostalAbbreviation>AS</PostalAbbreviation>
</InboundDestinationState>
<InboundCommodity>000000</InboundCommodity>
</ConversionRecord>
<ConversionRecord>
<InboundOriginCity>Seaford 1</InboundOriginCity>
<InboundOriginState>
<Key>AS</Key>
<PostalAbbreviation>AS</PostalAbbreviation>
</InboundOriginState>
<InboundDestinationCity>Salisbury 1</InboundDestinationCity>
<InboundDestinationState>
<Key>AS</Key>
<PostalAbbreviation>AS</PostalAbbreviation>
</InboundDestinationState>
<InboundCommodity>111111</InboundCommodity>
</ConversionRecord>
</ConversionRecords>
我尝试过的数据绑定:
_FileBindingSource = New BindingSource(_recordsRepository.getConversionRecords(), Nothing)
_InboundOriginStateBindingSource = New BindingSource(_stateRepository.StatesByKey, Nothing)
_InboundDestinationStateBindingSource = New BindingSource(_stateRepository.StatesByKey, Nothing)
ListBox1.DataSource = _FileBindingSource
'cboInboundOriginState
cboInboundOriginState.DisplayMember = "Key"
cboInboundOriginState.ValueMember = "Value"
cboInboundOriginState.DataSource = _InboundOriginStateBindingSource
cboInboundOriginState.DataBindings.Add("SelectedValue", _FileBindingSource, "InboundOriginState", True, DataSourceUpdateMode.OnPropertyChanged)
答案 0 :(得分:0)
通过大量研究,我找到了答案。为了使其工作,我必须将Equals(objA as object)重写为boolean。一旦我这样做,比较它所使用的那个类的唯一值。