長い間、私はコンボボックスの問題を解決しようとしていました(試したテストとフォーラムの数を考えると頭がおかしくなります)。私は、コンボボックスがソースに「バインド」された後、コンボボックスと同期されることを知っています(すべての変更はコンボボックスに表示されます)。コンボボックスに使用されているbindingSourceを更新する
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に多分何か役に立つが見つかりましたが、非常に(私はこのページによると、コードを更新)働いていません。
https://blogs.msdn.microsoft.com/dchandnani/2005/03/15/bindingsource-a-closer-look/のブログでも同様の解決策を導いてくれました。あなたのものは私が書いたものよりもはるかに深いです。 +1 – topshot