BindingSource更改后更新ComboBox下拉列表

时间:2015-08-28 16:04:39

标签: vb.net combobox

我在网上看了很多例子,但是找不到任何有用的东西(或者我做错了)。

ComboBox像这样绑定到Dictionary(String,String)和Nothing:

cbBox.DataSource = New BindingSource(dictStrings.Keys, Nothing)

但是,在调用dictStrings.Add(s1, s2)后,ComboBox的下拉菜单不会将新添加的值列为dictStrings。我怎样才能解决这个问题?我尝试重新绑定datasource,但它只是将下拉菜单留空。我试图使用ResetBindings()函数,但这不会起作用。谢谢。

3 个答案:

答案 0 :(得分:1)

你可以创建一个新的绑定,但是你会丢失你当前的索引位置,如果你连接了SelectedIndexChanged事件,那么可能会启动一些意想不到的烟火,所以这将是一个解决方法:

Dim index As Integer = cbBox.SelectedIndex
RemoveHandler cbBox.SelectedIndexChanged, AddressOf cbBox_SelectedIndexChanged
dictStrings.Add("new key", "new value")
cbBox.DataSource = New BindingSource(dictStrings.Keys, Nothing)
cbBox.SelectedIndex = index
AddHandler cbBox.SelectedIndexChanged, AddressOf cbBox_SelectedIndexChanged

答案 1 :(得分:0)

ComboBox1.Update()

应该解决问题。

编辑:cbBox.Update()

答案 2 :(得分:-1)

您是否尝试过cbBox.DataSource.refresh?