Windows 窗体 VB.NET 中的刷新组合框

fir*_*and 0 vb.net

以下是使用 DataSource 填充组合框的代码

Dim CountryList As Array = MyCtrl.GetAllCountries
    With cbCountyList
      .DataSource = CountryList 
      .DisplayMember = "CountryName"
      .ValueMember = "CountryID"
    End With
Run Code Online (Sandbox Code Playgroud)

将新的国家名称添加到数据库后,我想反映组合框中的更改。重复此代码不是一种选择,因为它会触发 SelectIndexChange 事件,并且不得不做一些糟糕的工作来避免这种情况。

所以我想知道是否有办法刷新组合框列表。我实际上认为绑定 DataSource 属性应该自动完成。我也试过

cbCountyList.Refresh()
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Mat*_*eer 5

您应该BindingSource在 ComboBox 和您的数据源之间坐下。然后调用BindingSource.ResetBindings(false)。它会为你做所有的魔法。

这就是我的意思(在 C# 中,但同样的想法):

BindingSource b = new BindingSource();
b.DataSource = CountryList;
cbCountryList.DataSource = b;
...
...
b.ResetBindings(false); // cbCountryList now has the latest countries
Run Code Online (Sandbox Code Playgroud)