【发布时间】:2016-06-28 21:02:20
【问题描述】:
很长一段时间以来,我一直在尝试解决组合框的问题(当我想到我尝试过多少测试和论坛时,这让我很头疼)。我知道在组合框“绑定”到源之后,它将与它同步(每个更改都将出现在组合框中)。
这是我的简单测试代码:
Public Class Form1
Dim a As New BindingSource, b As New Hashtable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.DataSource = a
ComboBox2.DataSource = a
b.Add(1, "a")
b.Add(2, "b")
a.DataSource = b
a.DataMember = "Value"
'' Tried this when a.DataMember is commented .Otherwise it gives error
''ComboBox1.DisplayMember = "Value"
''ComboBox1.ValueMember = "Key"
''ComboBox2.DisplayMember = "Value"
''ComboBox2.ValueMember = "Key"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
b.Add(3, "c") ''Nothing new in the combobox
''a.ResetBindings(False)
End Sub
End Class
看起来是这样的:
当我取消注释组合框的 DisplayMember 和 ValueMember 属性时,会发生这种情况(在按下 Button1 之后):
如您所见,count 属性说有 2 个项目,但 DataSource 说有 3 个。我认为这就是为什么没有出现新添加的项目(当我按下 Button1 时,尽管事实上它存储在 BindingSource 中)。
问题出在哪里?
注意:我在MSDN 上发现了一些可能有用的东西,但它不是很有效(我根据此页面更新了代码)。
【问题讨论】: