重置DataSource后,ComboBox项不会刷新

时间:2011-11-24 06:09:26

标签: c# combobox

我在Win Form上有几个ComboBox,我总是将列表设置为DataSource,如下所示:

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()清理物品,没有重置。

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

看起来这就是因为表单是由另一个表单“拥有”的,我在父表单中使用它child.Show(this)以方便从子表单中的父表单访问方法。

此外,使用BindingSource来管理数据绑定也可以解决问题。这就是我所做的:

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

答案 1 :(得分:0)

尝试此序列中的步骤

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