Vb.net 为什么控件共享数据表时会同步值?

Vb.net 为什么控件共享数据表时会同步值?,vb.net,winforms,data-binding,datatable,.net-3.5,Vb.net,Winforms,Data Binding,Datatable,.net 3.5,因此,我有两个组合框绑定到一个简单的数据表(yes/no) 出于某种原因,每当我更改一个控件的值时,另一个控件都会以相同的方式翻转。然而,当我将行更改为comboBox2.DataSource=tentable.Copy()时,这个问题消失了 当我将.DataSource行更改为: comboBox1.DataSource = New BindingSource() With {.DataSource = tempTable} comboBox2.DataSource = New Binding

因此,我有两个
组合框
绑定到一个简单的
数据表
(yes/no)

出于某种原因,每当我更改一个控件的值时,另一个控件都会以相同的方式翻转。然而,当我将行更改为
comboBox2.DataSource=tentable.Copy()
时,这个问题消失了

当我将
.DataSource
行更改为:

comboBox1.DataSource = New BindingSource() With {.DataSource = tempTable}
comboBox2.DataSource = New BindingSource() With {.DataSource = tempTable}
这个问题也解决了。所以我猜有某种类型的
BindingSources
池在继续


有人能解释一下吗?

绑定源具有position属性和PositionChanged事件。当位置改变时,其他控件接收该更新并相应地更新。通过使用不同的源,您的位置彼此独立。正如@LarsTech所说,您的第二个示例创建了两个独立的绑定源。第二个组合框不知道第一个组合框中的当前位置。但为什么它们在第一个实例中使用相同的
BindingSource
?代码中一定有什么东西故意为相同的对象提供相同的
BindingSource
,不是吗?
comboBox1.DataSource = New BindingSource() With {.DataSource = tempTable}
comboBox2.DataSource = New BindingSource() With {.DataSource = tempTable}