重置数据源后,组合框项未刷新

本文关键字:刷新 组合 置数据 数据源 | 更新日期: 2023-09-27 18:15:30

我在Win Form中有两个组合框,我总是像这样将列表设置为数据源:

aComboBox.DataSource = someList;
foreach(Object obj in aComboBox.Items) {
  // do something
}

这对我来说非常好,但是,当我试图像这样重置数据时,我有一些麻烦:

aComboBox.DataSource = null;
aComboBox.DataSource = someOtherList;
foreach(Object obj in aComboBox.Items) {
  // do something else
}

DataSource重置成功,但这不会触发重置Items。我试着打电话给aComboBox.Items.Clear()清理项目,没有重置发生。

我错过什么了吗?

重置数据源后,组合框项未刷新

看起来这一切都是因为表单被另一个表单"拥有",我在父表单中有child.Show(this),以便方便地从子表单中访问父表单的方法。

此外,使用BindingSource来处理数据绑定也可以达到这个目的。这是我所做的:

BindingSource bs = new BindingSource;
aComboBox.DataSource = bs;
bs.DataSource = someList;
//
// after some processing
//
bs.DataSource = null;
bs.DataSource = someOtherList;

按此顺序尝试以下步骤

cmbBox.Items.Clear();
cmbBox.DataSource = SomeOtherList;
cmbBox.DataBind();